Пример #1
0
 /// <inheritdoc />
 internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
 {
     if (Content != null)
     {
         formatter(Content, builder);
     }
 }
Пример #2
0
 internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
 {
     foreach (var inline in Inlines)
     {
         formatter(inline, builder);
     }
 }
Пример #3
0
        /// <summary>
        /// Gets the plain text without the unprintable nodes (e.g. comments, templates), with customized formatter.
        /// </summary>
        /// <param name="formatter">The formatter delegate used to format the <strong>child</strong> nodes, or <c>null</c> to use default formatter.</param>
        public string ToPlainText(NodePlainTextFormatter formatter)
        {
            var sb = new StringBuilder();

            ToPlainText(sb, formatter);
            return(sb.ToString());
        }
Пример #4
0
 /// <inheritdoc />
 internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
 {
     if (Name != null && plainTextInvisibleTags.Contains(Name))
     {
         return;
     }
     builder.Append(Content);
 }
Пример #5
0
 /// <summary>
 /// Gets the plain text without the unprintable nodes (e.g. comments, templates), with customized formatter.
 /// </summary>
 /// <param name="builder">The <see cref="StringBuilder"/> used to receive the content.</param>
 /// <param name="formatter">The formatter delegate used to format the <strong>child</strong> nodes, or <c>null</c> to use default formatter.</param>
 public void ToPlainText(StringBuilder builder, NodePlainTextFormatter formatter)
 {
     if (builder == null)
     {
         throw new ArgumentNullException(nameof(builder));
     }
     ToPlainTextCore(builder, formatter ?? DefaultNodePlainTextFormatter);
 }
Пример #6
0
        /// <inheritdoc />
        internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
        {
            var isFirst = true;

            foreach (var line in Lines)
            {
                if (isFirst)
                {
                    isFirst = false;
                }
                else
                {
                    builder.Append('\n');
                }
                formatter(line, builder);
            }
        }
Пример #7
0
        /// <inheritdoc />
        internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
        {
            var isFirst = true;

            foreach (var cell in Cells)
            {
                if (isFirst)
                {
                    isFirst = false;
                }
                else
                {
                    builder.Append('\t');
                }
                formatter(cell, builder);
            }
        }
Пример #8
0
        /// <inheritdoc />
        internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
        {
            var alt = Arguments.Alt;

            if (alt != null)
            {
                formatter(alt, builder);
            }
            var caption = Arguments.Caption;

            // delimit alt text and caption with a space.
            if (alt != null && caption != null)
            {
                builder.Append(' ');
            }
            if (caption != null)
            {
                formatter(caption, builder);
            }
        }
Пример #9
0
        /// <inheritdoc />
        internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
        {
            if (Caption != null)
            {
                formatter(_Caption, builder);
            }
            var firstRow = true;

            foreach (var r in Rows)
            {
                if (firstRow)
                {
                    firstRow = false;
                }
                else
                {
                    builder.AppendLine();
                }
                formatter(r, builder);
            }
        }
Пример #10
0
        /// <param name="builder"></param>
        /// <param name="formatter"></param>
        /// <inheritdoc />
        internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
        {
            // Target == null when parsing `[[]]` with AllowEmptyWikiLinkTarget enabled.
            if (Text == null)
            {
                if (Target != null)
                {
                    formatter(Target, builder);
                }
                return;
            }
            if (Text.Inlines.Count > 0)
            {
                formatter(Text, builder);
                return;
            }
            // Pipe trick. E.g.
            // [[abc (disambiguation)|]] --> [[abc (disambiguation)|abc]]
            var pos1 = builder.Length;

            formatter(Target, builder);
            if (builder.Length - pos1 >= 3 && builder[builder.Length - 1] == ')')
            {
                for (var pos2 = pos1 + 1; pos2 < builder.Length - 1; pos2++)
                {
                    if (builder[pos2] == '(')
                    {
                        // Pipe trick: Remove DAB suffix.
                        // Optionally remove 1 whitespace before left bracket.
                        if (char.IsWhiteSpace(builder[pos2 - 1]))
                        {
                            pos2--;
                        }
                        builder.Remove(pos2, builder.Length - pos2);
                        return;
                    }
                }
            }
        }
Пример #11
0
 /// <param name="builder"></param>
 /// <param name="formatter"></param>
 /// <inheritdoc />
 internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
 {
     if (!Brackets)
     {
         formatter(Target, builder);
     }
     else
     {
         if (Text != null)
         {
             var pos1 = builder.Length;
             formatter(Text, builder);
             for (var i = pos1; i < builder.Length; i++)
             {
                 if (!char.IsWhiteSpace(builder[i]))
                 {
                     return;
                 }
             }
         }
         // We should have shown something like [1]
         builder.Append("[#]");
     }
 }
Пример #12
0
 /// <summary>
 /// Infrastructure. This function will always throw a <seealso cref="NotSupportedException"/>.
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="formatter"></param>
 internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
 {
     throw new NotSupportedException();
 }
Пример #13
0
 /// <param name="builder"></param>
 /// <param name="formatter"></param>
 /// <inheritdoc />
 internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
 {
     // Unescape HTML entities.
     builder.Append(WebUtility.HtmlDecode(Content));
 }
Пример #14
0
 internal virtual void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter)
 {
     // The default implementation is to write nothing.
     Debug.Assert(builder != null);
     Debug.Assert(formatter != null);
 }