/// <inheritdoc /> public override void WriteTo(LuaTableTextWriter writer) { if (Name != null) { switch (Name.TokenType) { case LTokenType.Boolean: writer.WriteKey((bool)Name); break; case LTokenType.Integer: writer.WriteKey((long)Name); break; case LTokenType.Float: writer.WriteKey((double)Name); break; case LTokenType.String: writer.WriteKey((string)Name); break; default: #if NETSTANDARD2_0 Debug.Fail("Invalid Name.TokenType."); #else Debug.Assert(false); #endif break; } } Value.WriteTo(writer); }
public void WriteKeyedTest() { using (var sw = new StringWriter()) using (var tw = new LuaTableTextWriter(sw)) { tw.WriteStartTable(); tw.WriteKey("Test"); tw.WriteLiteral("value"); tw.WriteKey(123); tw.WriteLiteral(456); tw.WriteKey(TimeSpan.FromHours(3.2)); tw.WriteNil(); tw.WriteKey("while"); tw.WriteNil(); tw.WriteKey("function"); tw.WriteNil(); // Though it's meaningless… tw.WriteStartKey(); tw.WriteStartTable(); tw.WriteLiteral(1); tw.WriteLiteral(2); tw.WriteEndTable(); tw.WriteEndKey(); tw.WriteLiteral(123); tw.WriteEndTable(); tw.Flush(); Assert.Equal("{Test=\"value\",[123]=456,[\"03:12:00\"]=nil,[\"while\"]=nil,[\"function\"]=nil,[{1,2}]=123}", sw.ToString()); } }
public void WriteNestedTableTest() { using (var sw = new StringWriter()) using (var tw = new LuaTableTextWriter(sw)) { tw.WriteStartTable(); tw.WriteStartTable(); tw.WriteLiteral(1); tw.WriteLiteral(2); tw.WriteLiteral(3); tw.WriteEndTable(); tw.WriteLiteral(4); tw.WriteKey("Named5"); tw.WriteLiteral(5); tw.WriteStartTable(); tw.WriteLiteral(6); tw.WriteKey("Named7"); tw.WriteLiteral(7); tw.WriteEndTable(); tw.WriteEndTable(); tw.Flush(); Assert.Equal("{{1,2,3},4,Named5=5{6,Named7=7}}", sw.ToString()); } }
public void WriteOutsideTableTest() { using (var sw = new StringWriter()) using (var tw = new LuaTableTextWriter(sw)) { tw.WriteLiteral(123); tw.WriteStartKey(); tw.WriteLiteral(2); tw.WriteEndKey(); tw.WriteLiteral(456); tw.WriteKey("key"); tw.WriteLiteral("value"); tw.WriteLiteral("last"); tw.Flush(); Assert.Equal("123,[2]=456,key=\"value\",\"last\"", sw.ToString()); } }