Skip to content

Commit 52da3e0

Browse files
Add DisableHtml property to MarkdownTextBlock
Calls DisableHtml method on Markdig pipeline, as well as not adding any Html based renderer, HtmlBlockRenderer, HtmlEntityInlineRenderer, and HtmlInlineRenderer. When enabled, results in any html tags being ignored and plain-text parts remaining, unformatted. Committing Patch on behalf of Ameya Kulkarni Co-authored-by: Ameya Kulkarni <[email protected]>
1 parent 5696118 commit 52da3e0

File tree

2 files changed

+26
-7
lines changed

2 files changed

+26
-7
lines changed

components/MarkdownTextBlock/src/MarkdownTextBlock.Properties.cs

+20-2
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,16 @@ public partial class MarkdownTextBlock
7070
nameof(UseAutoLinks),
7171
typeof(bool),
7272
typeof(MarkdownTextBlock),
73-
new PropertyMetadata(false));
73+
new PropertyMetadata(false));
74+
75+
/// <summary>
76+
/// Identifies the <see cref="DisableHtmlProperty"/> dependency property.
77+
/// </summary>
78+
private static readonly DependencyProperty DisableHtmlProperty = DependencyProperty.Register(
79+
nameof(DisableHtmlProperty),
80+
typeof(bool),
81+
typeof(MarkdownTextBlock),
82+
new PropertyMetadata(false));
7483

7584
/// <summary>
7685
/// Identifies the <see cref="UseSoftlineBreakAsHardlineBreak"/> dependency property.
@@ -148,7 +157,16 @@ public bool UseAutoLinks
148157
{
149158
get => (bool)GetValue(UseAutoLinksProperty);
150159
set => SetValue(UseAutoLinksProperty, value);
151-
}
160+
}
161+
162+
/// <summary>
163+
/// If true, Disables HTML parsing.
164+
/// </summary>
165+
public bool DisableHtml
166+
{
167+
get => (bool)GetValue(DisableHtmlProperty);
168+
set => SetValue(DisableHtmlProperty, value);
169+
}
152170

153171
/// <summary>
154172
/// If true, considers single newlines as hardline breaks.

components/MarkdownTextBlock/src/MarkdownTextBlock.xaml.cs

+6-5
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ protected override void OnApplyTemplate()
5959
if (UseListExtras) pipelineBuilder = pipelineBuilder.UseListExtras();
6060
if (UseTaskLists) pipelineBuilder = pipelineBuilder.UseTaskLists();
6161
if (UseAutoLinks) pipelineBuilder = pipelineBuilder.UseAutoLinks();
62-
if (UseSoftlineBreakAsHardlineBreak) pipelineBuilder = pipelineBuilder.UseSoftlineBreakAsHardlineBreak();
62+
if (UseSoftlineBreakAsHardlineBreak) pipelineBuilder = pipelineBuilder.UseSoftlineBreakAsHardlineBreak();
63+
if (DisableHtml) pipelineBuilder = pipelineBuilder.DisableHtml();
6364

6465
_pipeline = pipelineBuilder.Build();
6566

@@ -110,23 +111,23 @@ private void Build()
110111
_renderer.ObjectRenderers.Add(new ParagraphRenderer());
111112
_renderer.ObjectRenderers.Add(new QuoteBlockRenderer());
112113
_renderer.ObjectRenderers.Add(new ThematicBreakRenderer());
113-
_renderer.ObjectRenderers.Add(new HtmlBlockRenderer());
114+
if (!DisableHtml) _renderer.ObjectRenderers.Add(new HtmlBlockRenderer());
114115

115116
// Default inline renderers
116117
if (UseAutoLinks) _renderer.ObjectRenderers.Add(new AutoLinkInlineRenderer());
117118
_renderer.ObjectRenderers.Add(new CodeInlineRenderer());
118119
_renderer.ObjectRenderers.Add(new DelimiterInlineRenderer());
119120
_renderer.ObjectRenderers.Add(new EmphasisInlineRenderer());
120-
_renderer.ObjectRenderers.Add(new HtmlEntityInlineRenderer());
121+
if (!DisableHtml) _renderer.ObjectRenderers.Add(new HtmlEntityInlineRenderer());
121122
_renderer.ObjectRenderers.Add(new LineBreakInlineRenderer());
122123
_renderer.ObjectRenderers.Add(new LinkInlineRenderer());
123124
_renderer.ObjectRenderers.Add(new LiteralInlineRenderer());
124125
_renderer.ObjectRenderers.Add(new ContainerInlineRenderer());
125126

126127
// Extension renderers
127128
if (UsePipeTables) _renderer.ObjectRenderers.Add(new TableRenderer());
128-
if (UseTaskLists) _renderer.ObjectRenderers.Add(new TaskListRenderer());
129-
_renderer.ObjectRenderers.Add(new HtmlInlineRenderer());
129+
if (UseTaskLists) _renderer.ObjectRenderers.Add(new TaskListRenderer());
130+
if (!DisableHtml) _renderer.ObjectRenderers.Add(new HtmlInlineRenderer());
130131
}
131132
_pipeline.Setup(_renderer);
132133
ApplyText(false);

0 commit comments

Comments
 (0)