Exemplo n.º 1
0
        public static IEnumerator XElementDegrapher(IObjectDegrapher caller, object arg)
        {
            switch (arg)
            {
            case XAttribute att:
                yield return(att.Name);

                yield return(att.Value);

                break;

            case XElement element:
                if (element.HasElements == false)
                {
                    yield return(element.Value);
                }

                foreach (var child in element.Attributes())
                {
                    yield return(child);
                }
                foreach (var child in element.Elements())
                {
                    yield return(child);
                }

                break;

            case XName name:
                yield return(name.LocalName);

                yield return(name.NamespaceName);

                break;

            case XDocument document:
                yield return(document.Root);

                break;

            case string _:
                yield return(arg);

                break;
            }
        }
        public static IEnumerator JsonDegrapher(IObjectDegrapher caller, object arg)
        {
            switch (arg)
            {
            case JToken array:
                foreach (var entry in array.Children())
                {
                    yield return(entry);
                }

                break;

            case string _:
                yield return(arg);

                break;
            }
        }
Exemplo n.º 3
0
        public static IEnumerator GenericDegrapher(IObjectDegrapher caller, object arg)
        {
            var type = arg.GetType().GetElementTypeOfEnumerable();

            if (type == null)
            {
                yield return(arg);

                yield break;
            }

            var items = (IEnumerable)arg;

            foreach (var child in items.Cast <object>())
            {
                yield return(child);
            }
        }
Exemplo n.º 4
0
        public static IEnumerator HtmlDegrapher(IObjectDegrapher caller, object arg)
        {
            switch (arg)
            {
            case ICharacterData text:

                yield return(text.Data);

                break;

            case INode element:

                foreach (var node in element.ChildNodes)
                {
                    yield return(node);
                }

                break;
            }
        }