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;
3using System.Text;
4using System.Threading.Tasks;
8using Waher.Events;
11
13{
17 public class TextRenderer : Renderer
18 {
22 public TextRenderer()
23 : base()
24 {
25 }
26
31 public TextRenderer(StringBuilder Output)
32 : base(Output)
33 {
34 }
35
39 public override async Task RenderFootnotes()
40 {
41 this.Output.AppendLine(new string('-', 80));
42 this.Output.AppendLine();
43
44 foreach (string Key in this.Document.FootnoteOrder)
45 {
46 if ((this.Document?.TryGetFootnote(Key, out Footnote Note) ?? false) &&
47 Note.Referenced)
48 {
49 this.Output.Append('[');
50
51 if (this.Document?.TryGetFootnoteNumber(Key, out int Nr) ?? false)
52 this.Output.Append(Nr.ToString());
53 else
54 this.Output.Append(Key);
55
56 this.Output.Append("] ");
57
58 await Note.Render(this);
59 }
60 }
61 }
62
63 #region Span Elements
64
69 public override Task Render(Abbreviation Element)
70 {
71 return this.RenderChildren(Element);
72 }
73
78 public override Task Render(AutomaticLinkMail Element)
79 {
80 this.Output.Append(Element.EMail);
81
82 return Task.CompletedTask;
83 }
84
89 public override Task Render(AutomaticLinkUrl Element)
90 {
91 this.Output.Append(Element.URL);
92
93 return Task.CompletedTask;
94 }
95
100 public override Task Render(Delete Element)
101 {
102 return this.RenderChildren(Element);
103 }
104
109 public override Task Render(DetailsReference Element)
110 {
111 if (!(this.Document.Detail is null))
112 return this.RenderDocument(this.Document.Detail, true);
113 else
114 return this.Render((MetaReference)Element);
115 }
116
121 public override Task Render(EmojiReference Element)
122 {
123 this.Output.Append(Element.Emoji.Unicode);
124
125 return Task.CompletedTask;
126 }
127
132 public override Task Render(Emphasize Element)
133 {
134 return this.RenderChildren(Element);
135 }
136
141 public override Task Render(FootnoteReference Element)
142 {
143 if (this.Document?.TryGetFootnote(Element.Key, out Footnote Footnote) ?? false)
144 Footnote.Referenced = true;
145
146 this.Output.Append(" [");
147
148 if ((this.Document?.TryGetFootnoteNumber(Element.Key, out int Nr) ?? false))
149 this.Output.Append(Nr.ToString());
150 else
151 this.Output.Append(Element.Key);
152
153 this.Output.Append(']');
154
155 return Task.CompletedTask;
156 }
157
162 public override Task Render(HashTag Element)
163 {
164 this.Output.Append(Element.Tag);
165
166 return Task.CompletedTask;
167 }
168
173 public override Task Render(HtmlEntity Element)
174 {
175 string s = Html.HtmlEntity.EntityToCharacter(Element.Entity);
176 if (!string.IsNullOrEmpty(s))
177 this.Output.Append(s);
178
179 return Task.CompletedTask;
180 }
181
186 public override Task Render(HtmlEntityUnicode Element)
187 {
188 this.Output.Append((char)Element.Code);
189
190 return Task.CompletedTask;
191 }
192
197 public override Task Render(InlineCode Element)
198 {
199 this.Output.Append(Element.Code);
200
201 return Task.CompletedTask;
202 }
203
208 public override Task Render(InlineHTML Element)
209 {
210 return Task.CompletedTask;
211 }
212
217 public override async Task Render(InlineScript Element)
218 {
219 object Result = await Element.EvaluateExpression();
220 await this.RenderObject(Result, Element.AloneInParagraph);
221 }
222
228 public Task RenderObject(object Result, bool AloneInParagraph)
229 {
230 if (Result is null)
231 return Task.CompletedTask;
232
233 this.Output.Append(Result.ToString());
234
235 if (AloneInParagraph)
236 {
237 this.Output.AppendLine();
238 this.Output.AppendLine();
239 }
240
241 return Task.CompletedTask;
242 }
243
248 public override Task Render(InlineText Element)
249 {
250 this.Output.Append(Element.Value);
251
252 return Task.CompletedTask;
253 }
254
259 public override Task Render(Insert Element)
260 {
261 return this.RenderChildren(Element);
262 }
263
268 public override Task Render(LineBreak Element)
269 {
270 this.Output.AppendLine();
271
272 return Task.CompletedTask;
273 }
274
279 public override Task Render(Link Element)
280 {
281 return this.RenderChildren(Element);
282 }
283
288 public override Task Render(LinkReference Element)
289 {
290 return this.RenderChildren(Element);
291 }
292
297 public override Task Render(MetaReference Element)
298 {
299 bool FirstOnRow = true;
300
301 if (Element.TryGetMetaData(out KeyValuePair<string, bool>[] Values))
302 {
303 foreach (KeyValuePair<string, bool> P in Values)
304 {
305 if (FirstOnRow)
306 FirstOnRow = false;
307 else
308 this.Output.Append(' ');
309
310 this.Output.Append(P.Key);
311 if (P.Value)
312 {
313 this.Output.AppendLine();
314 FirstOnRow = true;
315 }
316 }
317 }
318
319 return Task.CompletedTask;
320 }
321
326 public override Task Render(Model.SpanElements.Multimedia Element)
327 {
328 IMultimediaTextRenderer Renderer = Element.MultimediaHandler<IMultimediaTextRenderer>();
329 if (Renderer is null)
330 return this.DefaultRenderingMultimedia(Element.Children, Element.AloneInParagraph);
331 else
332 return Renderer.RenderText(this, Element.Items, Element.Children, Element.AloneInParagraph, Element.Document);
333 }
334
340 private async Task DefaultRenderingMultimedia(ChunkedList<MarkdownElement> ChildNodes,
341 bool AloneInParagraph)
342 {
343 await this.Render(ChildNodes);
344
345 if (AloneInParagraph)
346 {
347 this.Output.AppendLine();
348 this.Output.AppendLine();
349 }
350 }
351
356 public override Task Render(MultimediaReference Element)
357 {
359
360 if (!(Multimedia is null))
361 {
363 if (Renderer is null)
364 return this.DefaultRenderingMultimedia(Element.Children, Element.AloneInParagraph);
365 else
366 return Renderer.RenderText(this, Multimedia.Items, Element.Children, Element.AloneInParagraph, Element.Document);
367 }
368
369 return this.RenderChildren(Element);
370 }
371
376 public override Task Render(StrikeThrough Element)
377 {
378 return this.RenderChildren(Element);
379 }
380
385 public override Task Render(Strong Element)
386 {
387 return this.RenderChildren(Element);
388 }
389
394 public override async Task Render(SubScript Element)
395 {
396 int i;
397
398 using (TextRenderer Renderer = new TextRenderer())
399 {
400 await Renderer.RenderChildren(Element);
401
402 foreach (char ch in Renderer.ToString())
403 {
404 i = nrmScriptLetters.IndexOf(ch);
405 if (i < 0)
406 this.Output.Append(ch);
407 else
408 this.Output.Append(subScriptLetters[i]);
409 }
410 }
411 }
412
413 private const string nrmScriptLetters = "0123456789+-=()aeoxhklmnpstijruv";
414 private const string subScriptLetters = "₀₁₂₃₄₅₆₇₈₉₊₋₌₍₎ₐₑₒₓₕₖₗₘₙₚₛₜᵢⱼᵣᵤᵥ";
415
421 public static string ToSubscript(string s)
422 {
423 StringBuilder sb = new StringBuilder();
424 int i;
425
426 foreach (char ch in s)
427 {
428 i = nrmScriptLetters.IndexOf(ch);
429 if (i < 0)
430 sb.Append(ch);
431 else
432 sb.Append(subScriptLetters[i]);
433 }
434
435 return sb.ToString();
436 }
437
442 public override async Task Render(SuperScript Element)
443 {
444 int i;
445
446 using (TextRenderer Renderer = new TextRenderer())
447 {
448 await Renderer.RenderChildren(Element);
449
450 foreach (char ch in Renderer.ToString())
451 {
452 i = normlScriptLetters.IndexOf(ch);
453 if (i < 0)
454 this.Output.Append(ch);
455 else
456 this.Output.Append(superScriptLetters[i]);
457 }
458 }
459 }
460
461 private const string normlScriptLetters = "abcdefghijklmnoprstuvwxyzABDEGHIJKLMNOPRTUW0123456789+-=()";
462 private const string superScriptLetters = "ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖʳˢᵗᵘᵛʷˣʸᶻᴬᴮᴰᴱᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾᴿᵀᵁᵂ⁰¹²³⁴⁵⁶⁷⁸⁹⁺⁻⁼⁽⁾";
463
469 public static string ToSuperscript(string s)
470 {
471 StringBuilder sb = new StringBuilder();
472 int i;
473
474 foreach (char ch in s)
475 {
476 i = normlScriptLetters.IndexOf(ch);
477 if (i < 0)
478 sb.Append(ch);
479 else
480 sb.Append(superScriptLetters[i]);
481 }
482
483 return sb.ToString();
484 }
485
490 public override Task Render(Underline Element)
491 {
492 return this.RenderChildren(Element);
493 }
494
495 #endregion
496
497 #region Block elements
498
503 public override async Task Render(BlockQuote Element)
504 {
505 using (TextRenderer Renderer = new TextRenderer())
506 {
507 await Renderer.RenderChildren(Element);
508
509 string s = Renderer.ToString().Trim();
510 s = s.Replace("\r\n", "\n").Replace("\r", "\n");
511
512 foreach (string Row in s.Split('\n'))
513 {
514 this.Output.Append("> ");
515 this.Output.AppendLine(Row);
516 }
517
518 this.Output.AppendLine();
519 }
520 }
521
526 public override async Task Render(BulletList Element)
527 {
528 using (TextRenderer Renderer = new TextRenderer())
529 {
530 string s;
531 string s2 = Environment.NewLine + Environment.NewLine;
532 bool LastIsParagraph = false;
533
534 s = this.Output.ToString();
535 if (!s.EndsWith(Environment.NewLine) && !string.IsNullOrEmpty(s))
536 this.Output.AppendLine();
537
539 int i, c;
540
541 while (!(Loop is null))
542 {
543 for (i = Loop.Start, c = Loop.Pos; i < c; i++)
544 {
545 await Loop[i].Render(Renderer);
546
547 s = Renderer.ToString();
548 Renderer.Clear();
549 this.Output.Append(s);
550
551 LastIsParagraph = s.EndsWith(s2);
552 }
553
554 Loop = Loop.Next;
555 }
556
557 if (!LastIsParagraph)
558 this.Output.AppendLine();
559 }
560 }
561
566 public override Task Render(CenterAligned Element)
567 {
568 return this.RenderChildren(Element);
569 }
570
575 public override async Task Render(CodeBlock Element)
576 {
577 ICodeContentTextRenderer Renderer = Element.CodeContentHandler<ICodeContentTextRenderer>();
578
579 if (!(Renderer is null))
580 {
581 try
582 {
583 if (await Renderer.RenderText(this, Element.Rows, Element.Language, Element.Indent, Element.Document))
584 return;
585 }
586 catch (Exception ex)
587 {
588 ex = Log.UnnestException(ex);
589
590 if (ex is AggregateException ex2)
591 {
592 foreach (Exception ex3 in ex2.InnerExceptions)
593 this.Output.AppendLine(ex3.Message);
594 }
595 else
596 this.Output.AppendLine(ex.Message);
597 }
598 }
599 else
600 {
601 int i;
602
603 for (i = Element.Start; i <= Element.End; i++)
604 {
605 this.Output.Append(Element.IndentString);
606 this.Output.AppendLine(Element.Rows[i]);
607 }
608
609 this.Output.AppendLine();
610 }
611 }
612
617 public override Task Render(CommentBlock Element)
618 {
619 return Task.CompletedTask;
620 }
621
626 public override async Task Render(DefinitionDescriptions Element)
627 {
629 int i, c;
630
631 while (!(Loop is null))
632 {
633 for (i = Loop.Start, c = Loop.Pos; i < c; i++)
634 {
635 this.Output.Append(":\t");
636 await Loop[i].Render(this);
637 this.Output.AppendLine();
638 }
639
640 Loop = Loop.Next;
641 }
642 }
643
648 public override async Task Render(DefinitionList Element)
649 {
650 using (TextRenderer Renderer = new TextRenderer())
651 {
652 string s;
653 string s2 = Environment.NewLine + Environment.NewLine;
654 bool LastIsParagraph = false;
655 bool FirstTerm = true;
656
657 s = this.Output.ToString();
658 if (!s.EndsWith(Environment.NewLine) && !string.IsNullOrEmpty(s))
659 this.Output.AppendLine();
660
663 int i, c;
664
665 while (!(Loop is null))
666 {
667 for (i = Loop.Start, c = Loop.Pos; i < c; i++)
668 {
669 E = Loop[i];
670
671 if (E is DefinitionTerms)
672 {
673 if (FirstTerm)
674 FirstTerm = false;
675 else
676 this.Output.AppendLine();
677 }
678
679 await E.Render(Renderer);
680 s = Renderer.ToString();
681 Renderer.Clear();
682 this.Output.Append(s);
683
684 LastIsParagraph = s.EndsWith(s2);
685 }
686
687 Loop = Loop.Next;
688 }
689 if (!LastIsParagraph)
690 this.Output.AppendLine();
691 }
692 }
693
698 public override async Task Render(DefinitionTerms Element)
699 {
700 using (TextRenderer Renderer = new TextRenderer())
701 {
702 string s;
704 int i, c;
705
706 while (!(Loop is null))
707 {
708 for (i = Loop.Start, c = Loop.Pos; i < c; i++)
709 {
710 await Loop[i].Render(Renderer);
711 s = Renderer.ToString();
712 Renderer.Clear();
713 this.Output.Append(s);
714
715 if (!s.EndsWith(Environment.NewLine))
716 this.Output.AppendLine();
717 }
718
719 Loop = Loop.Next;
720 }
721 }
722 }
723
728 public override async Task Render(DeleteBlocks Element)
729 {
730 using (TextRenderer Renderer = new TextRenderer())
731 {
732 await Renderer.RenderChildren(Element);
733
734 string s = Renderer.ToString().Trim();
735 s = s.Replace("\r\n", "\n").Replace("\r", "\n");
736
737 foreach (string Row in s.Split('\n'))
738 {
739 this.Output.Append("-> ");
740 this.Output.AppendLine(Row);
741 }
742
743 this.Output.AppendLine();
744 }
745 }
746
751 public override Task Render(Footnote Element)
752 {
753 return this.RenderChildren(Element);
754 }
755
760 public override async Task Render(Header Element)
761 {
762 if (Element.Level <= 2)
763 {
764 int Len = this.Output.Length;
765
766 await this.RenderChildren(Element);
767
768 Len = this.Output.Length - Len + 3;
769 this.Output.AppendLine();
770 this.Output.AppendLine(new string(Element.Level == 1 ? '=' : '-', Len));
771 this.Output.AppendLine();
772 }
773 else
774 {
775 this.Output.Append(new string('#', Element.Level));
776 this.Output.Append(' ');
777
778 await this.RenderChildren(Element);
779
780 this.Output.AppendLine();
781 this.Output.AppendLine();
782 }
783 }
784
789 public override Task Render(HorizontalRule Element)
790 {
791 this.Output.AppendLine(new string('-', 80));
792 this.Output.AppendLine();
793
794 return Task.CompletedTask;
795 }
796
801 public override async Task Render(HtmlBlock Element)
802 {
803 using (TextRenderer Renderer = new TextRenderer())
804 {
805 string s;
806 bool First = true;
808 int i, c;
809
810 while (!(Loop is null))
811 {
812 for (i = Loop.Start, c = Loop.Pos; i < c; i++)
813 {
814 await Loop[i].Render(Renderer);
815 s = Renderer.ToString().TrimStart().Trim(' '); // Only space at the end, not CRLF
816 Renderer.Clear();
817
818 if (!string.IsNullOrEmpty(s))
819 {
820 if (First)
821 First = false;
822 else
823 this.Output.Append(' ');
824
825 this.Output.Append(s);
826
827 if (s.EndsWith("\n"))
828 First = true;
829 }
830 }
831
832 Loop = Loop.Next;
833 }
834
835 this.Output.AppendLine();
836 this.Output.AppendLine();
837 }
838 }
839
844 public override async Task Render(InsertBlocks Element)
845 {
846 using (TextRenderer Renderer = new TextRenderer())
847 {
848 await Renderer.RenderChildren(Element);
849
850 string s = Renderer.ToString().Trim();
851 s = s.Replace("\r\n", "\n").Replace("\r", "\n");
852
853 foreach (string Row in s.Split('\n'))
854 {
855 this.Output.Append("+> ");
856 this.Output.AppendLine(Row);
857 }
858
859 this.Output.AppendLine();
860 }
861 }
862
867 public override Task Render(InvisibleBreak Element)
868 {
869 return Task.CompletedTask;
870 }
871
876 public override Task Render(LeftAligned Element)
877 {
878 return this.RenderChildren(Element);
879 }
880
885 public override Task Render(MarginAligned Element)
886 {
887 return this.RenderChildren(Element);
888 }
889
894 public override Task Render(NestedBlock Element)
895 {
896 return this.RenderChildren(Element);
897 }
898
903 public override async Task Render(NumberedItem Element)
904 {
905 this.Output.Append(Element.Number.ToString());
906 this.Output.Append(". ");
907
908 using (TextRenderer Renderer = new TextRenderer())
909 {
910 await Renderer.RenderChild(Element);
911
912 string s = Renderer.ToString();
913
914 this.Output.Append(s);
915
916 if (!s.EndsWith("\n"))
917 this.Output.AppendLine();
918 }
919 }
920
925 public override async Task Render(NumberedList Element)
926 {
927 using (TextRenderer Renderer = new TextRenderer())
928 {
929 string s;
930 string s2 = Environment.NewLine + Environment.NewLine;
931 bool LastIsParagraph = false;
932
933 s = this.Output.ToString();
934 if (!s.EndsWith(Environment.NewLine) && !string.IsNullOrEmpty(s))
935 this.Output.AppendLine();
936
938 int i, c;
939
940 while (!(Loop is null))
941 {
942 for (i = Loop.Start, c = Loop.Pos; i < c; i++)
943 {
944 await Loop[i].Render(Renderer);
945 s = Renderer.ToString();
946 Renderer.Clear();
947 this.Output.Append(s);
948
949 LastIsParagraph = s.EndsWith(s2);
950 }
951
952 Loop = Loop.Next;
953 }
954
955 if (!LastIsParagraph)
956 this.Output.AppendLine();
957 }
958 }
959
964 public override async Task Render(Paragraph Element)
965 {
966 await this.RenderChildren(Element);
967
968 this.Output.AppendLine();
969 this.Output.AppendLine();
970 }
971
976 public override Task Render(RightAligned Element)
977 {
978 return this.RenderChildren(Element);
979 }
980
985 public override Task Render(Sections Element)
986 {
987 return this.RenderChildren(Element);
988 }
989
994 public override Task Render(SectionSeparator Element)
995 {
996 this.Output.AppendLine(new string('=', 80));
997 this.Output.AppendLine();
998
999 return Task.CompletedTask;
1000 }
1001
1006 public override async Task Render(Table Element)
1007 {
1008 bool First;
1009
1010 foreach (MarkdownElement[] Row in Element.Headers)
1011 {
1012 First = true;
1013
1014 foreach (MarkdownElement E in Row)
1015 {
1016 if (E is null)
1017 continue;
1018
1019 if (First)
1020 First = false;
1021 else
1022 this.Output.Append('\t');
1023
1024 await E.Render(this);
1025 }
1026
1027 this.Output.AppendLine();
1028 }
1029
1030 foreach (MarkdownElement[] Row in Element.Rows)
1031 {
1032 First = true;
1033
1034 foreach (MarkdownElement E in Row)
1035 {
1036 if (E is null)
1037 continue;
1038
1039 if (First)
1040 First = false;
1041 else
1042 this.Output.Append('\t');
1043
1044 await E.Render(this);
1045 }
1046
1047 this.Output.AppendLine();
1048 }
1049
1050 this.Output.AppendLine();
1051 }
1052
1057 public override async Task Render(TaskItem Element)
1058 {
1059 if (Element.IsChecked)
1060 this.Output.Append("[X] ");
1061 else
1062 this.Output.Append("[ ] ");
1063
1064 using (TextRenderer Renderer = new TextRenderer())
1065 {
1066 await Element.Child.Render(Renderer);
1067
1068 string s = Renderer.ToString();
1069
1070 this.Output.Append(s);
1071
1072 if (!s.EndsWith("\n"))
1073 this.Output.AppendLine();
1074 }
1075 }
1076
1081 public override async Task Render(TaskList Element)
1082 {
1083 using (TextRenderer Renderer = new TextRenderer())
1084 {
1085 string s;
1086 string s2 = Environment.NewLine + Environment.NewLine;
1087 bool LastIsParagraph = false;
1088
1089 s = this.Output.ToString();
1090 if (!s.EndsWith(Environment.NewLine) && !string.IsNullOrEmpty(s))
1091 this.Output.AppendLine();
1092
1094 int i, c;
1095
1096 while (!(Loop is null))
1097 {
1098 for (i = Loop.Start, c = Loop.Pos; i < c; i++)
1099 {
1100 await Loop[i].Render(Renderer);
1101 s = Renderer.ToString();
1102 Renderer.Clear();
1103 this.Output.Append(s);
1104
1105 LastIsParagraph = s.EndsWith(s2);
1106 }
1107
1108 Loop = Loop.Next;
1109 }
1110
1111 if (!LastIsParagraph)
1112 this.Output.AppendLine();
1113 }
1114 }
1115
1120 public override async Task Render(UnnumberedItem Element)
1121 {
1122 using (TextRenderer Renderer = new TextRenderer())
1123 {
1124 this.Output.Append(Element.Prefix);
1125 this.Output.Append(' ');
1126
1127 await Element.Child.Render(Renderer);
1128
1129 string s = Renderer.ToString();
1130
1131 this.Output.Append(s);
1132
1133 if (!s.EndsWith("\n"))
1134 this.Output.AppendLine();
1135 }
1136 }
1137
1138 #endregion
1139
1140 }
1141}
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:17
string IndentString
String used for indentation.
Definition: CodeBlock.cs:279
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:12
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 ChunkedList< MarkdownElement > Children
Any children of the element.
Abstract base class for all markdown elements.
abstract Task Render(IRenderer Output)
Renders 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:41
bool AloneInParagraph
If the element is alone in a paragraph.
Abstract base class for Markdown renderers.
Definition: Renderer.cs:15
readonly StringBuilder Output
Renderer output.
Definition: Renderer.cs:19
Task RenderChild(MarkdownElementSingleChild Element)
Renders the child of Element .
Definition: Renderer.cs:178
void Clear()
Clears the underlying StringBuilder.
Definition: Renderer.cs:138
virtual async Task RenderDocument(MarkdownDocument Document, bool Inclusion)
Renders a document.
Definition: Renderer.cs:76
Task RenderChildren(MarkdownElementChildren Element)
Renders the children of Element .
Definition: Renderer.cs:147
override string ToString()
Returns the renderer output.
Definition: Renderer.cs:130
MarkdownDocument Document
Reference to Markdown document being processed.
Definition: Renderer.cs:24
Renders plain text from a Markdown document.
Definition: TextRenderer.cs:18
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:39
override Task Render(FootnoteReference Element)
Renders Element .
override Task Render(AutomaticLinkUrl Element)
Renders Element .
Definition: TextRenderer.cs:89
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 .
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:69
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:31
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:22
override async Task Render(BulletList Element)
Renders Element .
override Task Render(AutomaticLinkMail Element)
Renders Element .
Definition: TextRenderer.cs:78
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:14
static Exception UnnestException(Exception Exception)
Unnests an exception, to extract the relevant inner exception.
Definition: Log.cs:828
Node referencing a chunk in a ChunkedList<T>
Definition: ChunkNode.cs:11
ChunkNode< T > Next
Next chunk
Definition: ChunkNode.cs:26
int Pos
Index after the last element in chunk.
Definition: ChunkNode.cs:51
int Start
Index of first element in chunk.
Definition: ChunkNode.cs:46
A chunked list is a linked list of chunks of objects of type T .
Definition: ChunkedList.cs:54
ChunkNode< T > FirstChunk
First chunk
Definition: ChunkedList.cs:259
Euler's number.
Definition: E.cs:12
Interface for code content plain text renderers.
Interface for multimedia content plain text renderers.