예제 #1
0
 internal static YNode Parse(Tokenizer tokenizer)
 {
     return(YDocument.Parse(tokenizer) ??
            YMapping.Parse(tokenizer) ??
            YAlias.Parse(tokenizer) ??
            YAnchor.Parse(tokenizer) ??
            YSequence.Parse(tokenizer) ??
            YScalar.Parse(tokenizer));
 }
예제 #2
0
        internal new static YNode Parse(Tokenizer tokenizer)
        {
            switch (tokenizer.Current.Kind)
            {
            case TokenKind.Anchor:
                var name = tokenizer.Current.Value;
                tokenizer.MoveNext();
                var anchor = new YAnchor(YMapping.Parse(tokenizer));
                tokenizer.Anchors[name] = anchor;
                break;
            }

            return(null);
        }
예제 #3
0
        private IDictionary <string, string> ParseContent(string content)
        {
            using (var scanner = new Scanner(content))
            {
                using (var tokinizer = new Tokenizer(scanner))
                {
                    var document = YMapping.Parse(tokinizer);
                    var dict     = new Dictionary <string, string>();
                    foreach (var docItem in document)
                    {
                        this.TryParseContentItems(docItem, ref dict);
                    }

                    return(new ReadOnlyDictionary <string, string>(dict));
                }
            }
        }