public ConfigCollection(string name, ConfigCollection parent = null) { Name = name; Parent = parent; Variables = new Dictionary <string, string>(); KeyBinds = new Dictionary <string, string>(); Data = new Dictionary <string, string>(); Modes = new Dictionary <string, ConfigCollection>(); }
public FileParser(IParseInstructionBuilder instructionBuilder) { this.instructionBuilder = instructionBuilder; _blocks = 0; //_dblQuotes = 0; //_quotes = 0; _lineNumber = 0; Data = new ConfigCollection("Default"); _data = Data; Errors = new List <Tuple <int, string> >(); _parseInstruction = instructionBuilder.Build(new AddErrorDelegate(AddError)); }
public void Parse(Stream stream) { _sr = new StreamReader(stream); string line = ""; var prevName = ""; while ((line = NextLine(line)) != null) { var result = ParseLine(line); if (result?.Status == FileParserStateResult.OpenBracket) { _blocks++; var modeName = result?.Instruction?.Instruction ?? prevName; var old = _data; _data = new ConfigCollection(modeName, old); old.Modes.Add(modeName, _data); } else if (result?.Status == FileParserStateResult.CloseBracket) { _blocks--; _data = _data.Parent; } prevName = result?.Instruction?.Instruction ?? ""; line = result?.Remaining ?? ""; } if (_blocks != 0) { AddError("Missing closing Brackets", false); } else if (_data.Name != "Default") { AddError($"Unknown error. ended up in mode \"{_data.Name}\" but it should be \"Default\".", false); } }