String IMarkupFormatter.OpenTag(IElement element, Boolean selfClosing) { var prefix = element.Prefix; var temp = Pool.NewStringBuilder(); temp.Append(Symbols.LessThan); if (!String.IsNullOrEmpty(prefix)) { temp.Append(prefix).Append(Symbols.Colon); } temp.Append(element.LocalName); foreach (var attribute in element.Attributes) { temp.Append(" ").Append(Instance.Attribute(attribute)); } if (selfClosing || !element.HasChildNodes) { temp.Append(" /"); } temp.Append(Symbols.GreaterThan); return(temp.ToPool()); }
/// <summary> /// Returns an HTML-code representation of the node. /// </summary> /// <param name="formatter">The formatter to use.</param> /// <returns>A string containing the HTML code.</returns> public override String ToHtml(IMarkupFormatter formatter) { var tagName = NodeName; var attributeStrings = new String[Attributes.Count]; for (int i = 0; i < attributeStrings.Length; i++) { var attribute = Attributes[i]; attributeStrings[i] = formatter.Attribute(attribute); } var open = formatter.OpenTag(tagName, attributeStrings, false); var children = _content.ChildNodes.ToHtml(formatter); var close = formatter.CloseTag(tagName, false); return(String.Concat(open, children, close)); }
/// <summary> /// Returns an HTML-code representation of the node. /// </summary> /// <param name="formatter">The formatter to use.</param> /// <returns>A string containing the HTML code.</returns> public override String ToHtml(IMarkupFormatter formatter) { var selfClosing = Flags.HasFlag(NodeFlags.SelfClosing); var tagName = (Flags & (NodeFlags.HtmlMember | NodeFlags.SvgMember | NodeFlags.MathMember)) != NodeFlags.None ? LocalName : NodeName; var attributeStrings = new String[_attributes.Count]; for (var i = 0; i < _attributes.Count; i++) { var attribute = _attributes[i]; attributeStrings[i] = formatter.Attribute(attribute); } var open = formatter.OpenTag(tagName, attributeStrings, selfClosing); var children = String.Empty; if (!selfClosing) { var sb = Pool.NewStringBuilder(); if (Flags.HasFlag(NodeFlags.LineTolerance) && FirstChild is IText) { var text = (IText)FirstChild; if (text.Data.Length > 0 && text.Data[0] == Symbols.LineFeed) { sb.Append(Symbols.LineFeed); } } foreach (var child in ChildNodes) { sb.Append(child.ToHtml(formatter)); } children = sb.ToPool(); } var close = formatter.CloseTag(tagName, selfClosing); return(String.Concat(open, children, close)); }
String IMarkupFormatter.OpenTag(IElement element, Boolean selfClosing) { var temp = StringBuilderPool.Obtain(); temp.Append(Symbols.LessThan); if (!String.IsNullOrEmpty(element.Prefix)) { temp.Append(element.Prefix).Append(Symbols.Colon); } temp.Append(element.LocalName); foreach (var attribute in element.Attributes) { temp.Append(' ').Append(Instance.Attribute(attribute)); } temp.Append(Symbols.GreaterThan); return(temp.ToPool()); }
/// <inheritdoc /> public string Attribute(IAttr attribute) => Htmlizer.IsBlazorAttribute(attribute?.Name ?? string.Empty) ? string.Empty : _formatter.Attribute(attribute);
public string Attribute(IAttr attribute) => Formatter.Attribute(attribute);