/// <inheritdoc /> internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter) { if (Content != null) { formatter(Content, builder); } }
internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter) { foreach (var inline in Inlines) { formatter(inline, builder); } }
/// <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()); }
/// <inheritdoc /> internal override void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter) { if (Name != null && plainTextInvisibleTags.Contains(Name)) { return; } builder.Append(Content); }
/// <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); }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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; } } } }
/// <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("[#]"); } }
/// <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(); }
/// <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)); }
internal virtual void ToPlainTextCore(StringBuilder builder, NodePlainTextFormatter formatter) { // The default implementation is to write nothing. Debug.Assert(builder != null); Debug.Assert(formatter != null); }