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()); }
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()); }
/// <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}>"); }
/// <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); } }
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)); }
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()); }
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()); }
public HtmlSerializerRegistry Add(IHtmlSerializer ser) { Serializers.Add(ser); return(this); }
/// <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);
/// <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()); }
/// <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 ? " />" : ">"); }
public XmlToHtmlConverter(IHtmlSerializer htmlSerializer, IXmlDeserializer xmlDeserializer) { _htmlSerializer = htmlSerializer; _xmlDeserializer = xmlDeserializer; }
public IEnumerable <IHtmlElement> Serialize(object o, int lvl, IHtmlSerializer fac) { yield return(SerializeToTable((IEnumerable)o)); }
public IEnumerable <IHtmlElement> Serialize(object o, int lvl, IHtmlSerializer fac) { return(Serializer.Invoke(o, lvl, fac)); }
public IEnumerable <IHtmlElement> Serialize(object x, int lvl, IHtmlSerializer fac) => SerializeProps(x, lvl, fac, HtmlSupport.PropsOf(x.GetType()), IncludeType);