Example #1
0
        public IEnumerable <IHtmlElement> Serialize(object o, int lvl, IHtmlSerializer fac)
        {
            //                Type elementType = GetElementType(o);
            //                Type elementType = GetItemType(o);
            if (o is IEnumerable)
            {
                o = (o as IEnumerable).ToRawList();
            }
            var elementType = o.GetType().GetGenericArguments().Length == 1
                    ? o.GetType().GetGenericArguments()[0]
                    : o.GetType().GetElementType();

            if (elementType == null)
            {
                throw new ArgumentException($"Unable to find elementtype for {o.GetType()}");
            }

            var itemType = HtmlSupport.GetItemType(elementType);

            return(new Ul
            {
                Clz = "result-list " + itemType,
                Itemscope = true,
                Itemtype = HtmlSupport.Itemtype(o),
                Subs = ((IEnumerable <object>)o)
                       .SelectMany(item => fac.Serialize(item, lvl - 1, fac))
                       .Select(elem => new Li(elem))
                       .OfType <IHtmlElement>()
                       .ToArray(),
            }.ToArray());
        }
Example #2
0
        public IEnumerable <IHtmlElement> Serialize(object x, int lvl, IHtmlSerializer fac)
        {
//                IDictionary dict;
//                dict = (IDictionary) x;
//                dict = (IDictionary<string, object>) x;
            var d        = (IDictionary)x;
            var itemtype = HtmlSupport.Itemtype(x);
            var subs     = d.Keys.ToRawList().Cast <string>()
                           .Select(name => new { Name = name, Val = d[name] })
//                    .Where(a => a.Val != null)
                           .SelectMany(a => new IHtmlElement[]
            {
                new Dt(a.Name),
                new Dd {
                    Subs = fac.Serialize(a.Val, lvl - 1, fac).ToArray()
                }
            })
                           .ToArray();

            return(new Ul
            {
                Subs = subs,
                Itemscope = true,
                Itemtype = itemtype,
            }.ToArray());
        }
Example #3
0
        /// <summary>
        /// Write a representation of this instance to the given <see cref="IHtmlSerializer"/>.
        /// </summary>
        /// <param name="serializer"><see cref="IHtmlSerializer"/> to write to.</param>
        public override void Serialize(IHtmlSerializer serializer)
        {
            base.Serialize(serializer);

            var oneLiner = _children.All(x => !x.SuggestNewlineWhenSerialized) && _children.Any(x => x is StringHtmlElement);

            if (!oneLiner)
            {
                serializer.BeginBlock(AllowIndentation);
            }

            foreach (var element in Children)
            {
                if (Verbatim && element is StringHtmlElement)
                {
                    serializer.Write(((StringHtmlElement)element).Value);
                }
                else
                {
                    element.Serialize(serializer);
                }
                if (element.SuggestNewlineWhenSerialized || Verbatim)
                {
                    serializer.SuggestNewline();
                }
            }

            if (!oneLiner)
            {
                serializer.EndBlock();
            }

            serializer.Write($"</{Name}>");
        }
Example #4
0
 /// <summary>
 /// Serializes the attributes in this element to the given <see cref="IHtmlSerializer"/>.
 /// </summary>
 /// <param name="serializer"><see cref="IHtmlSerializer"/> to write to.</param>
 protected void SerializeAttributes(IHtmlSerializer serializer)
 {
     foreach (var attribute in Attributes)
     {
         serializer.Write(" ");
         attribute.Serialize(serializer);
     }
 }
Example #5
0
        public IEnumerable <IHtmlElement> Serialize(object o, int lvl, IHtmlSerializer fac = null)
        {
            if (lvl < 0)
            {
                return(new IHtmlElement[0]);
            }
            var s = FindSerializer(o);

            if (s == null)
            {
                throw new ArgumentException($"Don't know how to serialize {o.GetType().FullName}");
            }
            return(s.Serialize(o, lvl, fac ?? this));
        }
Example #6
0
        public static IEnumerable <IHtmlElement> SerializeProps(object x, int lvl, IHtmlSerializer fac, IEnumerable <MemberInfo> props, bool includeType)
        {
            var itemType = HtmlSupport.Itemtype(x);

            var subs = new List <IHtmlElement>();

            if (includeType)
            {
                subs.AddRange(new IHtmlElement[]
                {
                    new Dt("Type"),
                    new Dd
                    {
                        Title = itemType,
                        Text  = x.GetType().Name,
                    },
                });
            }

            props
            .Select(mi => new { mi.Name, Val = HtmlSupport.TryGetVal(mi, x) })
            .Where(a => a.Val != null)
            .SelectMany(a => new IHtmlElement[]
            {
                new Dt(a.Name),
                new Dd {
                    Itemprop = PropName(a.Name), Subs = fac.Serialize(a.Val, lvl - 1, fac).ToArray()
                }
            })
            .ToList().ForEach(e => subs.Add(e));

            return(new Dl
            {
                Subs = subs.ToArray(),
                Itemscope = true,
                Itemtype = itemType,
            }.ToArray());
        }
Example #7
0
        public IEnumerable <IHtmlElement> Serialize(object x, int lvl, IHtmlSerializer fac)
        {
            var d = (IDictionary <string, object>)x;

            if (!d.Keys.Any())
            {
                return(new Dl().ToArray());
            }
            if (!d.ContainsKey("type"))
            {
                throw new NotSupportedException();
            }
            var itemRef  = (string)d["type"];
            var itemtype = HtmlSupport.Itemtype(d);
            var subs     = d.Keys.ToRawList().Cast <string>()
                           .Select(name => KeyValuePair.Create(name, d[name]))
//                    .Where(a => a.Val != null)
                           .SelectMany(a => new IHtmlElement[]
            {
                new Dt(ColumnToTitle(a.Key)),
                new Dd
                {
                    // Itemprop = a.Key,
                    // Subs = fac.Serialize(a.Val, lvl - 1, fac).ToArray()
                    Subs = DbValueToElement(itemRef, d, a).ToArray()
                }
            })
                           .ToArray();

            return(new Dl
            {
                Subs = subs,
                Itemscope = true,
                Itemtype = itemtype,
            }.ToArray());
        }
Example #8
0
 public HtmlSerializerRegistry Add(IHtmlSerializer ser)
 {
     Serializers.Add(ser);
     return(this);
 }
Example #9
0
 /// <summary>
 /// Write a representation of this instance to the given <see cref="IHtmlSerializer"/>.
 /// </summary>
 /// <param name="serializer"><see cref="IHtmlSerializer"/> to write to.</param>
 public abstract void Serialize(IHtmlSerializer serializer);
Example #10
0
 /// <summary>
 /// Write a representation of this instance to the given <see cref="IHtmlSerializer"/>.
 /// </summary>
 /// <param name="serializer"><see cref="IHtmlSerializer"/> to write to.</param>
 public void Serialize(IHtmlSerializer serializer)
 {
     serializer.Write(ToString());
 }
Example #11
0
 /// <summary>
 /// Write a representation of this instance to the given <see cref="IHtmlSerializer"/>.
 /// </summary>
 /// <param name="serializer"><see cref="IHtmlSerializer"/> to write to.</param>
 public override void Serialize(IHtmlSerializer serializer)
 {
     serializer.Write($"<{Name}");
     SerializeAttributes(serializer);
     serializer.Write(TrailingSlash ? " />" : ">");
 }
Example #12
0
 public XmlToHtmlConverter(IHtmlSerializer htmlSerializer, IXmlDeserializer xmlDeserializer)
 {
     _htmlSerializer  = htmlSerializer;
     _xmlDeserializer = xmlDeserializer;
 }
Example #13
0
 public IEnumerable <IHtmlElement> Serialize(object o, int lvl, IHtmlSerializer fac)
 {
     yield return(SerializeToTable((IEnumerable)o));
 }
Example #14
0
 public IEnumerable <IHtmlElement> Serialize(object o, int lvl, IHtmlSerializer fac)
 {
     return(Serializer.Invoke(o, lvl, fac));
 }
Example #15
0
 public IEnumerable <IHtmlElement> Serialize(object x, int lvl, IHtmlSerializer fac) =>
 SerializeProps(x, lvl, fac, HtmlSupport.PropsOf(x.GetType()), IncludeType);