private static IEnumerable <KeyValueSyntax> GetAllKeys(this TableSyntaxBase table) { foreach (var item in table.Items) { yield return(item); } foreach (var sub in table.Items.OfType <TableSyntax>().SelectMany(GetAllKeys)) { yield return(sub); } }
public KeyValueSyntax GetOrCreateConfig([NotNull] TableSyntaxBase t, [NotNull] string key) { var kvs = GetConfig(t, key); if (kvs != null) { return(kvs); } kvs = new KeyValueSyntax(key, new BareKeySyntax()); t.Items.Add(kvs); return(kvs); }
public DocumentSyntax Run() { var doc = new DocumentSyntax(); _diagnostics = doc.Diagnostics; _currentTable = null; _hideNewLine = true; NextToken(); while (TryParseTableEntry(out var itemEntry)) { if (itemEntry == null) { continue; } if (itemEntry is TableSyntaxBase table) { _currentTable = table; AddToListAndUpdateSpan(doc.Tables, table); } else if (_currentTable == null) { AddToListAndUpdateSpan(doc.KeyValues, (KeyValueSyntax)itemEntry); } else { // Otherwise, we know that we can only have a key-value AddToListAndUpdateSpan(_currentTable.Items, (KeyValueSyntax)itemEntry); } } if (_currentTable != null) { Close(_currentTable); _currentTable = null; } Close(doc); if (_lexer.HasErrors) { foreach (var lexerError in _lexer.Errors) { Log(lexerError); } } return(doc); }
private static IEnumerable <InsertOperation> MapToInsertOperations(TableSyntaxBase tableSyntax) => tableSyntax switch {
public KeyValueSyntax GetConfig([NotNull] TableSyntaxBase table, [NotNull] string key) => table.Items .FirstOrDefault(kv => kv.Key.Key.ToString().Trim() == key);