public override void Visit(YamlScalarNode scalar) { switch (scalar.Anchor) { case "&": var visitor = new YamlConfigurationVisitor(); scalar.Accept(visitor); _archors.Add(scalar.Value, visitor.Data); break; case "*": var archor = (Dictionary <string, object>)(_archors.ContainsKey(scalar.Value) ? _archors[scalar.Value] : throw new YamlException(scalar.Start, scalar.End, $"archor {scalar.Value} is not exist")); if (scalar.Tag != "<<") { _path.Push(scalar.Tag); } archor.Each(x => Data.Add($"{CurrentPath}:{x.Key}", x.Value.ToString())); if (scalar.Tag != "<<") { _path.Pop(); } break; default: _buffer.Push(scalar.Value); break; } }
public override void Load(Stream stream) { var reader = new StreamReader(stream); var ys = new YamlStream(); ys.Load(new Parser(reader)); var visitor = new YamlConfigurationVisitor(Data); visitor.Visit(ys); reader.Dispose(); }