private static Dictionary <int, (int indent, TamlValue value)> ReadLines(StreamReader reader) { var lines = new Dictionary <int, (int indent, TamlValue value)>(); int currentLineNumber = 0; while (!reader.EndOfStream) { var rawLine = reader.ReadLine(); var indent = CountIntendedTabs(rawLine); var line = rawLine.Trim(); TamlKeyValuePair?value = null; if (string.IsNullOrEmpty(line)) { // empty line we ignore currentLineNumber--; // we don't count empty lines continue; } else if (line.Contains('\t')) { // this is a KeyValuePair var match = _KeyValuePair.Matches(line)[0].Groups; value = new TamlKeyValuePair(match["key"].Value, new TamlValue(match["value"].Value)); } else { // this is a single value value = new TamlKeyValuePair(line, null); } lines.Add(currentLineNumber, (indent, value)); currentLineNumber++; } return(lines); }
private static ParsedDocument ReadLines(StreamReader reader) { var directives = new List <TamlKeyValuePair>(); var lines = new Dictionary <int, (int indent, TamlKeyValuePair value)>(); int currentLineNumber = 0; while (!reader.EndOfStream) { var rawLine = reader.ReadLine(); // Handle comments - ignore and read next line if (rawLine?[0] == '#') { continue; } var indent = CountIntendedTabs(rawLine); var line = rawLine.Trim(); TamlKeyValuePair?value = null; if (string.IsNullOrEmpty(line)) { // empty line we ignore currentLineNumber--; // we don't count empty lines continue; } else if (line.Contains('\t')) { // this is a KeyValuePair var match = _KeyValuePair.Matches(line)[0].Groups; value = new TamlKeyValuePair(match["key"].Value, new TamlValue(match["value"].Value)); } else { // this is a single value value = new TamlKeyValuePair(line, null); } if (rawLine?[0] == '!') // This is a processor directive { value.Key = value.Key.TrimStart('!', ' '); directives.Add(value); } else { lines.Add(currentLineNumber, (indent, value)); currentLineNumber++; } } return(new ParsedDocument(lines, directives)); }
private static TamlValue GetPairIfNoValue(TamlKeyValuePair currentPair) { return(currentPair.HasValue && !string.IsNullOrEmpty(currentPair.Value) ? currentPair : new TamlKeyValuePair(currentPair !.Key, null)); }