Ejemplo n.º 1
0
        public static dynamic ToPoco(this YamlNode topNode, CleanNameDelegate cleanNameFunc = null)
        {
            var expandoDict =
                new ExpandoObject()
                as IDictionary <string, object>;

            switch (topNode)
            {
            case YamlMappingNode mapping:
                ProcessMappingChildren(expandoDict, mapping);
                break;

            case YamlSequenceNode sequence:
                return(sequence.Select(s => ToPoco(s, cleanNameFunc)).ToArray());

            case YamlScalarNode scalar:
                var v = ProcessScalarNode(scalar);
                return(v);
            }

            return(expandoDict);
        }
Ejemplo n.º 2
0
        private static void ProcessMappingChildren(IDictionary <string, object> expandoDict, YamlMappingNode mapping, CleanNameDelegate cleanNameFunc = null)
        {
            if (cleanNameFunc == null)
            {
                cleanNameFunc = DefaultCleanNameFunc;
            }

            foreach (var entry in mapping.Children)
            {
                dynamic v;

                switch (entry.Value)
                {
                case YamlScalarNode scalerNode:
                    v = ProcessScalarNode(scalerNode);
                    break;

                case YamlMappingNode mappingNode:
                    v = ToPoco(mappingNode, cleanNameFunc);
                    break;

                case YamlSequenceNode sequenceNode:
                    v = sequenceNode.Children.Select(s => ToPoco(s, cleanNameFunc)).ToArray();
                    break;

                default:
                    v = "";
                    break;
                }
                var key = cleanNameFunc(((YamlScalarNode)entry.Key).Value);
                expandoDict.Add(key, v);
            }
        }
Ejemplo n.º 3
0
        public static T ToPoco <T>(this YamlNode topNode, CleanNameDelegate cleanNameFunc = null)
        {
            var json = ToJson(topNode, cleanNameFunc);

            return(JsonConvert.DeserializeObject <T>(json));
        }
Ejemplo n.º 4
0
        public static string ToJson(this YamlNode topNode, CleanNameDelegate cleanNameFunc = null)
        {
            var poco = ToPoco(topNode, cleanNameFunc);

            return(JsonConvert.SerializeObject(poco));
        }