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());
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 3
0
        /// <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));
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
 /// <inheritdoc />
 public string Attribute(IAttr attribute)
 => Htmlizer.IsBlazorAttribute(attribute?.Name ?? string.Empty)
         ? string.Empty
         : _formatter.Attribute(attribute);
Esempio n. 6
0
 public string Attribute(IAttr attribute) => Formatter.Attribute(attribute);