コード例 #1
0
ファイル: YamlParser.cs プロジェクト: jooooel/tye
        public static Dictionary <string, object> GetDictionary(YamlNode node)
        {
            if (node.NodeType != YamlNodeType.Mapping)
            {
                throw new TyeYamlException(node.Start,
                                           CoreStrings.FormatUnexpectedType(YamlNodeType.Mapping.ToString(), node.NodeType.ToString()));
            }

            var dictionary = new Dictionary <string, object>();

            foreach (var mapping in (YamlMappingNode)node)
            {
                var key = YamlParser.GetScalarValue(mapping.Key);

                dictionary[key] = mapping.Value.NodeType switch
                {
                    YamlNodeType.Scalar => YamlParser.GetScalarValue(key, mapping.Value) !,
                    YamlNodeType.Mapping => YamlParser.GetDictionary(mapping.Value),
                    _ => throw new TyeYamlException(mapping.Value.Start,
                                                    CoreStrings.FormatUnexpectedType(YamlNodeType.Mapping.ToString(), mapping.Value.NodeType.ToString()))
                };
            }

            return(dictionary);
        }
コード例 #2
0
ファイル: ConfigExtensionsParser.cs プロジェクト: jooooel/tye
        public static void HandleExtensionsMapping(YamlSequenceNode yamlSequenceNode, List <Dictionary <string, object> > extensions)
        {
            foreach (var child in yamlSequenceNode.Children)
            {
                switch (child.NodeType)
                {
                case YamlNodeType.Mapping:
                    var extensionDictionary = YamlParser.GetDictionary(child);
                    extensions.Add(extensionDictionary);
                    break;

                default:
                    throw new TyeYamlException(child.Start,
                                               CoreStrings.FormatUnexpectedType(YamlNodeType.Mapping.ToString(), child.NodeType.ToString()));
                }
            }
        }