Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
TextRenderer.cs
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.Threading.Tasks;
8using Waher.Events;
9
11{
15 public class TextRenderer : Renderer
16 {
20 public TextRenderer()
21 : base()
22 {
23 }
24
29 public TextRenderer(StringBuilder Output)
30 : base(Output)
31 {
32 }
33
37 public override async Task RenderFootnotes()
38 {
39 this.Output.AppendLine(new string('-', 80));
40 this.Output.AppendLine();
41
42 foreach (string Key in this.Document.FootnoteOrder)
43 {
44 if ((this.Document?.TryGetFootnote(Key, out Footnote Note) ?? false) &&
45 Note.Referenced)
46 {
47 this.Output.Append('[');
48
49 if (this.Document?.TryGetFootnoteNumber(Key, out int Nr) ?? false)
50 this.Output.Append(Nr.ToString());
51 else
52 this.Output.Append(Key);
53
54 this.Output.Append("] ");
55
56 await Note.Render(this);
57 }
58 }
59 }
60
61 #region Span Elements
62
67 public override Task Render(Abbreviation Element)
68 {
69 return this.RenderChildren(Element);
70 }
71
76 public override Task Render(AutomaticLinkMail Element)
77 {
78 this.Output.Append(Element.EMail);
79
80 return Task.CompletedTask;
81 }
82
87 public override Task Render(AutomaticLinkUrl Element)
88 {
89 this.Output.Append(Element.URL);
90
91 return Task.CompletedTask;
92 }
93
98 public override Task Render(Delete Element)
99 {
100 return this.RenderChildren(Element);
101 }
102
107 public override Task Render(DetailsReference Element)
108 {
109 if (!(this.Document.Detail is null))
110 return this.RenderDocument(this.Document.Detail, true);
111 else
112 return this.Render((MetaReference)Element);
113 }
114
119 public override Task Render(EmojiReference Element)
120 {
121 this.Output.Append(Element.Emoji.Unicode);
122
123 return Task.CompletedTask;
124 }
125
130 public override Task Render(Emphasize Element)
131 {
132 return this.RenderChildren(Element);
133 }
134
139 public override Task Render(FootnoteReference Element)
140 {
141 if (this.Document?.TryGetFootnote(Element.Key, out Footnote Footnote) ?? false)
142 Footnote.Referenced = true;
143
144 this.Output.Append(" [");
145
146 if ((this.Document?.TryGetFootnoteNumber(Element.Key, out int Nr) ?? false))
147 this.Output.Append(Nr.ToString());
148 else
149 this.Output.Append(Element.Key);
150
151 this.Output.Append(']');
152
153 return Task.CompletedTask;
154 }
155
160 public override Task Render(HashTag Element)
161 {
162 this.Output.Append(Element.Tag);
163
164 return Task.CompletedTask;
165 }
166
171 public override Task Render(HtmlEntity Element)
172 {
173 string s = Html.HtmlEntity.EntityToCharacter(Element.Entity);
174 if (!string.IsNullOrEmpty(s))
175 this.Output.Append(s);
176
177 return Task.CompletedTask;
178 }
179
184 public override Task Render(HtmlEntityUnicode Element)
185 {
186 this.Output.Append((char)Element.Code);
187
188 return Task.CompletedTask;
189 }
190
195 public override Task Render(InlineCode Element)
196 {
197 this.Output.Append(Element.Code);
198
199 return Task.CompletedTask;
200 }
201
206 public override Task Render(InlineHTML Element)
207 {
208 return Task.CompletedTask;
209 }
210
215 public override async Task Render(InlineScript Element)
216 {
217 object Result = await Element.EvaluateExpression();
218 await this.RenderObject(Result, Element.AloneInParagraph);
219 }
220
226 public Task RenderObject(object Result, bool AloneInParagraph)
227 {
228 if (Result is null)
229 return Task.CompletedTask;
230
231 this.Output.Append(Result.ToString());
232
233 if (AloneInParagraph)
234 {
235 this.Output.AppendLine();
236 this.Output.AppendLine();
237 }
238
239 return Task.CompletedTask;
240 }
241
246 public override Task Render(InlineText Element)
247 {
248 this.Output.Append(Element.Value);
249
250 return Task.CompletedTask;
251 }
252
257 public override Task Render(Insert Element)
258 {
259 return this.RenderChildren(Element);
260 }
261
266 public override Task Render(LineBreak Element)
267 {
268 this.Output.AppendLine();
269
270 return Task.CompletedTask;
271 }
272
277 public override Task Render(Link Element)
278 {
279 return this.RenderChildren(Element);
280 }
281
286 public override Task Render(LinkReference Element)
287 {
288 return this.RenderChildren(Element);
289 }
290
295 public override Task Render(MetaReference Element)
296 {
297 bool FirstOnRow = true;
298
299 if (Element.TryGetMetaData(out KeyValuePair<string, bool>[] Values))
300 {
301 foreach (KeyValuePair<string, bool> P in Values)
302 {
303 if (FirstOnRow)
304 FirstOnRow = false;
305 else
306 this.Output.Append(' ');
307
308 this.Output.Append(P.Key);
309 if (P.Value)
310 {
311 this.Output.AppendLine();
312 FirstOnRow = true;
313 }
314 }
315 }
316
317 return Task.CompletedTask;
318 }
319
324 public override Task Render(Model.SpanElements.Multimedia Element)
325 {
326 IMultimediaTextRenderer Renderer = Element.MultimediaHandler<IMultimediaTextRenderer>();
327 if (Renderer is null)
328 return this.DefaultRenderingMultimedia(Element.Children, Element.AloneInParagraph);
329 else
330 return Renderer.RenderText(this, Element.Items, Element.Children, Element.AloneInParagraph, Element.Document);
331 }
332
338 private async Task DefaultRenderingMultimedia(IEnumerable<MarkdownElement> ChildNodes,
339 bool AloneInParagraph)
340 {
341 foreach (MarkdownElement E in ChildNodes)
342 await E.Render(this);
343
344 if (AloneInParagraph)
345 {
346 this.Output.AppendLine();
347 this.Output.AppendLine();
348 }
349 }
350
355 public override Task Render(MultimediaReference Element)
356 {
358
359 if (!(Multimedia is null))
360 {
362 if (Renderer is null)
363 return this.DefaultRenderingMultimedia(Element.Children, Element.AloneInParagraph);
364 else
365 return Renderer.RenderText(this, Multimedia.Items, Element.Children, Element.AloneInParagraph, Element.Document);
366 }
367
368 return this.RenderChildren(Element);
369 }
370
375 public override Task Render(StrikeThrough Element)
376 {
377 return this.RenderChildren(Element);
378 }
379
384 public override Task Render(Strong Element)
385 {
386 return this.RenderChildren(Element);
387 }
388
393 public override async Task Render(SubScript Element)
394 {
395 int i;
396
397 using (TextRenderer Renderer = new TextRenderer())
398 {
399 await Renderer.RenderChildren(Element);
400
401 foreach (char ch in Renderer.ToString())
402 {
403 i = nrmScriptLetters.IndexOf(ch);
404 if (i < 0)
405 this.Output.Append(ch);
406 else
407 this.Output.Append(subScriptLetters[i]);
408 }
409 }
410 }
411
412 private const string nrmScriptLetters = "0123456789+-=()aeoxhklmnpstijruv";
413 private const string subScriptLetters = "₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₕₖₗₘₙₚₛₜᵢⱼᵣᵤᵥ";
414
420 public static string ToSubscript(string s)
421 {
422 StringBuilder sb = new StringBuilder();
423 int i;
424
425 foreach (char ch in s)
426 {
427 i = nrmScriptLetters.IndexOf(ch);
428 if (i < 0)
429 sb.Append(ch);
430 else
431 sb.Append(subScriptLetters[i]);
432 }
433
434 return sb.ToString();
435 }
436
441 public override async Task Render(SuperScript Element)
442 {
443 int i;
444
445 using (TextRenderer Renderer = new TextRenderer())
446 {
447 await Renderer.RenderChildren(Element);
448
449 foreach (char ch in Renderer.ToString())
450 {
451 i = normlScriptLetters.IndexOf(ch);
452 if (i < 0)
453 this.Output.Append(ch);
454 else
455 this.Output.Append(superScriptLetters[i]);
456 }
457 }
458 }
459
460 private const string normlScriptLetters = "abcdefghijklmnoprstuvwxyzABDEGHIJKLMNOPRTUW0123456789+-=()";
461 private const string superScriptLetters = "ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖʳˢᵗᵘᵛʷˣʸᶻᴬᴮᴰᴱᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾᴿᵀᵁᵂ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾";
462
468 public static string ToSuperscript(string s)
469 {
470 StringBuilder sb = new StringBuilder();
471 int i;
472
473 foreach (char ch in s)
474 {
475 i = normlScriptLetters.IndexOf(ch);
476 if (i < 0)
477 sb.Append(ch);
478 else
479 sb.Append(superScriptLetters[i]);
480 }
481
482 return sb.ToString();
483 }
484
489 public override Task Render(Underline Element)
490 {
491 return this.RenderChildren(Element);
492 }
493
494 #endregion
495
496 #region Block elements
497
502 public override async Task Render(BlockQuote Element)
503 {
504 using (TextRenderer Renderer = new TextRenderer())
505 {
506 await Renderer.RenderChildren(Element);
507
508 string s = Renderer.ToString().Trim();
509 s = s.Replace("\r\n", "\n").Replace("\r", "\n");
510
511 foreach (string Row in s.Split('\n'))
512 {
513 this.Output.Append("> ");
514 this.Output.AppendLine(Row);
515 }
516
517 this.Output.AppendLine();
518 }
519 }
520
525 public override async Task Render(BulletList Element)
526 {
527 using (TextRenderer Renderer = new TextRenderer())
528 {
529 string s;
530 string s2 = Environment.NewLine + Environment.NewLine;
531 bool LastIsParagraph = false;
532
533 s = this.Output.ToString();
534 if (!s.EndsWith(Environment.NewLine) && !string.IsNullOrEmpty(s))
535 this.Output.AppendLine();
536
537 foreach (MarkdownElement E in Element.Children)
538 {
539 await E.Render(Renderer);
540
541 s = Renderer.ToString();
542 Renderer.Clear();
543 this.Output.Append(s);
544
545 LastIsParagraph = s.EndsWith(s2);
546 }
547
548 if (!LastIsParagraph)
549 this.Output.AppendLine();
550 }
551 }
552
557 public override Task Render(CenterAligned Element)
558 {
559 return this.RenderChildren(Element);
560 }
561
566 public override async Task Render(CodeBlock Element)
567 {
568 ICodeContentTextRenderer Renderer = Element.CodeContentHandler<ICodeContentTextRenderer>();
569
570 if (!(Renderer is null))
571 {
572 try
573 {
574 if (await Renderer.RenderText(this, Element.Rows, Element.Language, Element.Indent, Element.Document))
575 return;
576 }
577 catch (Exception ex)
578 {
579 ex = Log.UnnestException(ex);
580
581 if (ex is AggregateException ex2)
582 {
583 foreach (Exception ex3 in ex2.InnerExceptions)
584 this.Output.AppendLine(ex3.Message);
585 }
586 else
587 this.Output.AppendLine(ex.Message);
588 }
589 }
590 else
591 {
592 int i;
593
594 for (i = Element.Start; i <= Element.End; i++)
595 {
596 this.Output.Append(Element.IndentString);
597 this.Output.AppendLine(Element.Rows[i]);
598 }
599
600 this.Output.AppendLine();
601 }
602 }
603
608 public override Task Render(CommentBlock Element)
609 {
610 return Task.CompletedTask;
611 }
612
617 public override async Task Render(DefinitionDescriptions Element)
618 {
619 foreach (MarkdownElement E in Element.Children)
620 {
621 this.Output.Append(":\t");
622 await E.Render(this);
623 this.Output.AppendLine();
624 }
625 }
626
631 public override async Task Render(DefinitionList Element)
632 {
633 using (TextRenderer Renderer = new TextRenderer())
634 {
635 string s;
636 string s2 = Environment.NewLine + Environment.NewLine;
637 bool LastIsParagraph = false;
638 bool FirstTerm = true;
639
640 s = this.Output.ToString();
641 if (!s.EndsWith(Environment.NewLine) && !string.IsNullOrEmpty(s))
642 this.Output.AppendLine();
643
644 foreach (MarkdownElement E in Element.Children)
645 {
646 if (E is DefinitionTerms)
647 {
648 if (FirstTerm)
649 FirstTerm = false;
650 else
651 this.Output.AppendLine();
652 }
653
654 await E.Render(Renderer);
655 s = Renderer.ToString();
656 Renderer.Clear();
657 this.Output.Append(s);
658
659 LastIsParagraph = s.EndsWith(s2);
660 }
661
662 if (!LastIsParagraph)
663 this.Output.AppendLine();
664 }
665 }
666
671 public override async Task Render(DefinitionTerms Element)
672 {
673 using (TextRenderer Renderer = new TextRenderer())
674 {
675 string s;
676
677 foreach (MarkdownElement E in Element.Children)
678 {
679 await E.Render(Renderer);
680 s = Renderer.ToString();
681 Renderer.Clear();
682 this.Output.Append(s);
683
684 if (!s.EndsWith(Environment.NewLine))
685 this.Output.AppendLine();
686 }
687 }
688 }
689
694 public override async Task Render(DeleteBlocks Element)
695 {
696 using (TextRenderer Renderer = new TextRenderer())
697 {
698 foreach (MarkdownElement E in Element.Children)
699 await E.Render(Renderer);
700
701 string s = Renderer.ToString().Trim();
702 s = s.Replace("\r\n", "\n").Replace("\r", "\n");
703
704 foreach (string Row in s.Split('\n'))
705 {
706 this.Output.Append("-> ");
707 this.Output.AppendLine(Row);
708 }
709
710 this.Output.AppendLine();
711 }
712 }
713
718 public override Task Render(Footnote Element)
719 {
720 return this.RenderChildren(Element);
721 }
722
727 public override async Task Render(Header Element)
728 {
729 if (Element.Level <= 2)
730 {
731 int Len = this.Output.Length;
732
733 await this.RenderChildren(Element);
734
735 Len = this.Output.Length - Len + 3;
736 this.Output.AppendLine();
737 this.Output.AppendLine(new string(Element.Level == 1 ? '=' : '-', Len));
738 this.Output.AppendLine();
739 }
740 else
741 {
742 this.Output.Append(new string('#', Element.Level));
743 this.Output.Append(' ');
744
745 await this.RenderChildren(Element);
746
747 this.Output.AppendLine();
748 this.Output.AppendLine();
749 }
750 }
751
756 public override Task Render(HorizontalRule Element)
757 {
758 this.Output.AppendLine(new string('-', 80));
759 this.Output.AppendLine();
760
761 return Task.CompletedTask;
762 }
763
768 public override async Task Render(HtmlBlock Element)
769 {
770 using (TextRenderer Renderer = new TextRenderer())
771 {
772 string s;
773 bool First = true;
774
775 foreach (MarkdownElement E in Element.Children)
776 {
777 await E.Render(Renderer);
778 s = Renderer.ToString().TrimStart().Trim(' '); // Only space at the end, not CRLF
779 Renderer.Clear();
780
781 if (!string.IsNullOrEmpty(s))
782 {
783 if (First)
784 First = false;
785 else
786 this.Output.Append(' ');
787
788 this.Output.Append(s);
789
790 if (s.EndsWith("\n"))
791 First = true;
792 }
793 }
794
795 this.Output.AppendLine();
796 this.Output.AppendLine();
797 }
798 }
799
804 public override async Task Render(InsertBlocks Element)
805 {
806 using (TextRenderer Renderer = new TextRenderer())
807 {
808 foreach (MarkdownElement E in Element.Children)
809 await E.Render(Renderer);
810
811 string s = Renderer.ToString().Trim();
812 s = s.Replace("\r\n", "\n").Replace("\r", "\n");
813
814 foreach (string Row in s.Split('\n'))
815 {
816 this.Output.Append("+> ");
817 this.Output.AppendLine(Row);
818 }
819
820 this.Output.AppendLine();
821 }
822 }
823
828 public override Task Render(InvisibleBreak Element)
829 {
830 return Task.CompletedTask;
831 }
832
837 public override Task Render(LeftAligned Element)
838 {
839 return this.RenderChildren(Element);
840 }
841
846 public override Task Render(MarginAligned Element)
847 {
848 return this.RenderChildren(Element);
849 }
850
855 public override Task Render(NestedBlock Element)
856 {
857 return this.RenderChildren(Element);
858 }
859
864 public override async Task Render(NumberedItem Element)
865 {
866 this.Output.Append(Element.Number.ToString());
867 this.Output.Append(". ");
868
869 using (TextRenderer Renderer = new TextRenderer())
870 {
871 await Renderer.RenderChild(Element);
872
873 string s = Renderer.ToString();
874
875 this.Output.Append(s);
876
877 if (!s.EndsWith("\n"))
878 this.Output.AppendLine();
879 }
880 }
881
886 public override async Task Render(NumberedList Element)
887 {
888 using (TextRenderer Renderer = new TextRenderer())
889 {
890 string s;
891 string s2 = Environment.NewLine + Environment.NewLine;
892 bool LastIsParagraph = false;
893
894 s = this.Output.ToString();
895 if (!s.EndsWith(Environment.NewLine) && !string.IsNullOrEmpty(s))
896 this.Output.AppendLine();
897
898 foreach (MarkdownElement E in Element.Children)
899 {
900 await E.Render(Renderer);
901 s = Renderer.ToString();
902 Renderer.Clear();
903 this.Output.Append(s);
904
905 LastIsParagraph = s.EndsWith(s2);
906 }
907
908 if (!LastIsParagraph)
909 this.Output.AppendLine();
910 }
911 }
912
917 public override async Task Render(Paragraph Element)
918 {
919 await this.RenderChildren(Element);
920
921 this.Output.AppendLine();
922 this.Output.AppendLine();
923 }
924
929 public override Task Render(RightAligned Element)
930 {
931 return this.RenderChildren(Element);
932 }
933
938 public override Task Render(Sections Element)
939 {
940 return this.RenderChildren(Element);
941 }
942
947 public override Task Render(SectionSeparator Element)
948 {
949 this.Output.AppendLine(new string('=', 80));
950 this.Output.AppendLine();
951
952 return Task.CompletedTask;
953 }
954
959 public override async Task Render(Table Element)
960 {
961 bool First;
962
963 foreach (MarkdownElement[] Row in Element.Headers)
964 {
965 First = true;
966
967 foreach (MarkdownElement E in Row)
968 {
969 if (E is null)
970 continue;
971
972 if (First)
973 First = false;
974 else
975 this.Output.Append('\t');
976
977 await E.Render(this);
978 }
979
980 this.Output.AppendLine();
981 }
982
983 foreach (MarkdownElement[] Row in Element.Rows)
984 {
985 First = true;
986
987 foreach (MarkdownElement E in Row)
988 {
989 if (E is null)
990 continue;
991
992 if (First)
993 First = false;
994 else
995 this.Output.Append('\t');
996
997 await E.Render(this);
998 }
999
1000 this.Output.AppendLine();
1001 }
1002
1003 this.Output.AppendLine();
1004 }
1005
1010 public override async Task Render(TaskItem Element)
1011 {
1012 if (Element.IsChecked)
1013 this.Output.Append("[X] ");
1014 else
1015 this.Output.Append("[ ] ");
1016
1017 using (TextRenderer Renderer = new TextRenderer())
1018 {
1019 await Element.Child.Render(Renderer);
1020
1021 string s = Renderer.ToString();
1022
1023 this.Output.Append(s);
1024
1025 if (!s.EndsWith("\n"))
1026 this.Output.AppendLine();
1027 }
1028 }
1029
1034 public override async Task Render(TaskList Element)
1035 {
1036 using (TextRenderer Renderer = new TextRenderer())
1037 {
1038 string s;
1039 string s2 = Environment.NewLine + Environment.NewLine;
1040 bool LastIsParagraph = false;
1041
1042 s = this.Output.ToString();
1043 if (!s.EndsWith(Environment.NewLine) && !string.IsNullOrEmpty(s))
1044 this.Output.AppendLine();
1045
1046 foreach (MarkdownElement E in Element.Children)
1047 {
1048 await E.Render(Renderer);
1049 s = Renderer.ToString();
1050 Renderer.Clear();
1051 this.Output.Append(s);
1052
1053 LastIsParagraph = s.EndsWith(s2);
1054 }
1055
1056 if (!LastIsParagraph)
1057 this.Output.AppendLine();
1058 }
1059 }
1060
1065 public override async Task Render(UnnumberedItem Element)
1066 {
1067 using (TextRenderer Renderer = new TextRenderer())
1068 {
1069 this.Output.Append(Element.Prefix);
1070 this.Output.Append(' ');
1071
1072 await Element.Child.Render(Renderer);
1073
1074 string s = Renderer.ToString();
1075
1076 this.Output.Append(s);
1077
1078 if (!s.EndsWith("\n"))
1079 this.Output.AppendLine();
1080 }
1081 }
1082
1083 #endregion
1084
1085 }
1086}
IEnumerable< string > FootnoteOrder
Order of footnotes.
MarkdownDocument Detail
Detail document of a master document.
Multimedia GetReference(string Label)
Gets the multimedia information referenced by a label.
Represents a block quote in a markdown document.
Definition: BlockQuote.cs:11
Represents a bullet list in a markdown document.
Definition: BulletList.cs:11
Represents a center-aligned set of blocks in a markdown document.
Represents a code block in a markdown document.
Definition: CodeBlock.cs:16
string IndentString
String used for indentation.
Definition: CodeBlock.cs:273
Represents a comment block in a markdown document.
Definition: CommentBlock.cs:10
Represents a definition list in a markdown document.
Represents inserted blocks in a markdown document.
Definition: DeleteBlocks.cs:11
Represents a header in a markdown document.
Definition: Header.cs:15
Represents a block of HTML in a markdown document.
Definition: HtmlBlock.cs:11
Represents inserted blocks in a markdown document.
Definition: InsertBlocks.cs:11
Represents a left-aligned set of blocks in a markdown document.
Definition: LeftAligned.cs:11
Represents a margin-aligned set of blocks in a markdown document.
Represents a nested block with no special formatting rules in a markdown document.
Definition: NestedBlock.cs:11
Represents a numbered item in an ordered list.
Definition: NumberedItem.cs:10
Represents a numbered list in a markdown document.
Definition: NumberedList.cs:11
Represents a paragraph in a markdown document.
Definition: Paragraph.cs:11
Represents a right-aligned set of blocks in a markdown document.
Definition: RightAligned.cs:11
Represents a sequence of sections.
Definition: Sections.cs:11
Represents a table in a markdown document.
Definition: Table.cs:11
Represents a task item in a task list.
Definition: TaskItem.cs:10
bool IsChecked
If the item is checked or not.
Definition: TaskItem.cs:31
Represents a task list in a markdown document.
Definition: TaskList.cs:11
Represents an unnumbered item in an ordered list.
override IEnumerable< MarkdownElement > Children
Any children of the element.
Abstract base class for all markdown elements.
abstract Task Render(IRenderer Output)
Renders the element.
virtual IEnumerable< MarkdownElement > Children
Any children of the element.
MarkdownDocument Document
Markdown document.
Represents an HTML entity in Unicode format.
bool AloneInParagraph
If the element is alone in a paragraph.
Definition: InlineScript.cs:55
async Task< object > EvaluateExpression()
Evaluates the script expression.
Definition: InlineScript.cs:71
bool TryGetMetaData(out KeyValuePair< string, bool >[] Values)
Tries to get meta-data from the document.
MultimediaItem[] Items
Multimedia items.
Definition: Multimedia.cs:40
bool AloneInParagraph
If the element is alone in a paragraph.
Abstract base class for Markdown renderers.
Definition: Renderer.cs:14
readonly StringBuilder Output
Renderer output.
Definition: Renderer.cs:18
Task RenderChild(MarkdownElementSingleChild Element)
Renders the child of Element .
Definition: Renderer.cs:175
async Task RenderChildren(MarkdownElementChildren Element)
Renders the children of Element .
Definition: Renderer.cs:147
void Clear()
Clears the underlying StringBuilder.
Definition: Renderer.cs:138
virtual async Task RenderDocument(MarkdownDocument Document, bool Inclusion)
Renders a document.
Definition: Renderer.cs:75
override string ToString()
Returns the renderer output.
Definition: Renderer.cs:130
MarkdownDocument Document
Reference to Markdown document being processed.
Definition: Renderer.cs:23
Renders plain text from a Markdown document.
Definition: TextRenderer.cs:16
override Task Render(Strong Element)
Renders Element .
override async Task Render(DefinitionTerms Element)
Renders Element .
override Task Render(InvisibleBreak Element)
Renders Element .
override Task Render(HtmlEntityUnicode Element)
Renders Element .
override Task Render(HorizontalRule Element)
Renders Element .
override async Task Render(TaskItem Element)
Renders Element .
Task RenderObject(object Result, bool AloneInParagraph)
Generates plain text from Script output.
override Task Render(InlineText Element)
Renders Element .
override Task Render(MultimediaReference Element)
Renders Element .
override Task Render(MetaReference Element)
Renders Element .
override Task Render(Model.SpanElements.Multimedia Element)
Renders Element .
override async Task RenderFootnotes()
Renders footnotes.
Definition: TextRenderer.cs:37
override Task Render(FootnoteReference Element)
Renders Element .
override Task Render(AutomaticLinkUrl Element)
Renders Element .
Definition: TextRenderer.cs:87
override async Task Render(TaskList Element)
Renders Element .
override Task Render(SectionSeparator Element)
Renders Element .
override async Task Render(DefinitionDescriptions Element)
Renders Element .
override async Task Render(DeleteBlocks Element)
Renders Element .
override Task Render(HashTag Element)
Renders Element .
override Task Render(HtmlEntity Element)
Renders Element .
static string ToSubscript(string s)
Converts a string to subscript (as far as it goes).
override async Task Render(Table Element)
Renders Element .
override Task Render(MarginAligned Element)
Renders Element .
override async Task Render(Header Element)
Renders Element .
override Task Render(RightAligned Element)
Renders Element .
override Task Render(Delete Element)
Renders Element .
Definition: TextRenderer.cs:98
override async Task Render(BlockQuote Element)
Renders Element .
override Task Render(EmojiReference Element)
Renders Element .
override Task Render(Sections Element)
Renders Element .
override Task Render(Abbreviation Element)
Renders Element .
Definition: TextRenderer.cs:67
override async Task Render(NumberedItem Element)
Renders Element .
override async Task Render(DefinitionList Element)
Renders Element .
override Task Render(CommentBlock Element)
Renders Element .
override Task Render(Insert Element)
Renders Element .
static string ToSuperscript(string s)
Converts a string to superscript (as far as it goes).
override async Task Render(HtmlBlock Element)
Renders Element .
override async Task Render(NumberedList Element)
Renders Element .
override Task Render(Footnote Element)
Renders Element .
override Task Render(InlineCode Element)
Renders Element .
override async Task Render(CodeBlock Element)
Renders Element .
override async Task Render(SuperScript Element)
Renders Element .
override Task Render(InlineHTML Element)
Renders Element .
override async Task Render(InsertBlocks Element)
Renders Element .
override async Task Render(SubScript Element)
Renders Element .
override Task Render(StrikeThrough Element)
Renders Element .
TextRenderer(StringBuilder Output)
Renders plain text from a Markdown document.
Definition: TextRenderer.cs:29
override Task Render(Underline Element)
Renders Element .
override async Task Render(Paragraph Element)
Renders Element .
TextRenderer()
Renders plain text from a Markdown document.
Definition: TextRenderer.cs:20
override async Task Render(BulletList Element)
Renders Element .
override Task Render(AutomaticLinkMail Element)
Renders Element .
Definition: TextRenderer.cs:76
override Task Render(LinkReference Element)
Renders Element .
override Task Render(LeftAligned Element)
Renders Element .
override Task Render(Emphasize Element)
Renders Element .
override async Task Render(UnnumberedItem Element)
Renders Element .
override Task Render(NestedBlock Element)
Renders Element .
override Task Render(DetailsReference Element)
Renders Element .
override async Task Render(InlineScript Element)
Renders Element .
override Task Render(Link Element)
Renders Element .
override Task Render(LineBreak Element)
Renders Element .
override Task Render(CenterAligned Element)
Renders Element .
Static class managing the application event log. Applications and services log events on this static ...
Definition: Log.cs:13
static Exception UnnestException(Exception Exception)
Unnests an exception, to extract the relevant inner exception.
Definition: Log.cs:818
Interface for code content plain text renderers.
Interface for multimedia content plain text renderers.