public override void Visit(InlineTableSyntax inlineTable) { var parentTable = _currentTable; _currentTable = new TomlTable(); base.Visit(inlineTable); _currentValue = _currentTable; _currentTable = parentTable; }
public override void Visit(InlineTableSyntax inlineTable) { var parentTable = _currentTable; _currentTable = new ValueTable() { MirrorSyntax = inlineTable, }; base.Visit(inlineTable); _currentValue = new Value(_currentTable); _currentTable = parentTable; }
public static ValueTable AddTableWithSyntax(this ValueList list) { // Create a new item and matching syntax var newSyntaxTable = new InlineTableSyntax() { OpenBrace = SyntaxFactory.Token(TokenKind.OpenBrace), CloseBrace = SyntaxFactory.Token(TokenKind.CloseBrace), }; var newTable = new ValueTable() { MirrorSyntax = newSyntaxTable, }; newSyntaxTable.CloseBrace.AddLeadingWhitespace(); // Add the model to the parent table model list.Add(new Value(newTable)); newSyntaxTable.LeadingTrivia = new List <SyntaxTrivia>() { new SyntaxTrivia(TokenKind.Whitespaces, "\t"), }; // Add the new syntax to the parent table syntax var arrayItemSyntax = new ArrayItemSyntax() { Value = newSyntaxTable, Comma = SyntaxFactory.Token(TokenKind.Comma), }; arrayItemSyntax.Comma.TrailingTrivia = new List <SyntaxTrivia>() { SyntaxFactory.NewLineTrivia(), }; switch (list.MirrorSyntax) { case ArraySyntax arraySyntax: arraySyntax.Items.Add(arrayItemSyntax); break; default: throw new InvalidOperationException("Unknown Syntax on ValueList"); } return(newTable); }
public void SetProperties(IDictionary <string, string> value) { ValueTable?values; if (_table.TryGetValue(Property_Properties, out var propertiesValues)) { values = (ValueTable)propertiesValues.AsTable(); } else { var newTableSyntax = new InlineTableSyntax() { OpenBrace = SyntaxFactory.Token(TokenKind.OpenBrace), CloseBrace = SyntaxFactory.Token(TokenKind.CloseBrace), }; values = new ValueTable() { MirrorSyntax = newTableSyntax, }; _table[Property_Properties] = new Value(values); // Add the new syntax to the parent table syntax switch (_table.MirrorSyntax) { case TableSyntaxBase tableSyntax: tableSyntax.Items.Add(new KeyValueSyntax(Property_Properties, newTableSyntax)); break; default: throw new InvalidOperationException("Unknown Syntax on ValueTable"); } } // Add the new syntax to the parent table syntax // values.(); switch (values.MirrorSyntax) { case InlineTableSyntax tableSyntax: // Replace all items while (tableSyntax.Items.ChildrenCount > 0) { tableSyntax.Items.RemoveChildrenAt(0); } var index = 0; foreach (var item in value) { bool isLastItem = index == value.Keys.Count - 1; var equalToken = SyntaxFactory.Token(TokenKind.Equal); equalToken.AddLeadingWhitespace(); equalToken.AddTrailingWhitespace(); var newKeyValue = new KeyValueSyntax() { Key = new KeySyntax(item.Key), EqualToken = equalToken, Value = new StringValueSyntax(item.Value), }; var newInlineTableItem = new InlineTableItemSyntax(newKeyValue) { }; if (!isLastItem) { newInlineTableItem.Comma = SyntaxFactory.Token(TokenKind.Comma); } // newInlineTableItem.LeadingTrivia = new List<SyntaxTrivia>() { SyntaxFactory.Whitespace() }; tableSyntax.Items.Add(newInlineTableItem); index++; } break; default: throw new InvalidOperationException("Unknown Syntax on ValueList"); } }