예제 #1
0
        public override void Visit(InlineTableSyntax inlineTable)
        {
            var parentTable = _currentTable;

            _currentTable = new TomlTable();
            base.Visit(inlineTable);
            _currentValue = _currentTable;
            _currentTable = parentTable;
        }
예제 #2
0
        public override void Visit(InlineTableSyntax inlineTable)
        {
            var parentTable = _currentTable;

            _currentTable = new ValueTable()
            {
                MirrorSyntax = inlineTable,
            };
            base.Visit(inlineTable);
            _currentValue = new Value(_currentTable);
            _currentTable = parentTable;
        }
예제 #3
0
        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);
        }
예제 #4
0
        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");
            }
        }