Skip to content

Commit 09efd29

Browse files
committed
update
1 parent 87c8998 commit 09efd29

File tree

5 files changed

+38
-13
lines changed

5 files changed

+38
-13
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
2+
3+
namespace DotMarkdown;
4+
5+
public interface IMarkdownEscaperProvider
6+
{
7+
MarkdownCharEscaper GetDefaultEscaper();
8+
}

src/DotMarkdown/MarkdownBaseWriter.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ internal abstract class MarkdownBaseWriter : MarkdownWriter
3131

3232
protected MarkdownBaseWriter(MarkdownWriterSettings? settings = null)
3333
{
34-
Settings = settings ?? MarkdownWriterSettings.Default;
34+
settings ??= MarkdownWriterSettings.Default;
35+
36+
Settings = settings;
37+
Escaper = settings.EscaperProvider.GetDefaultEscaper();
3538

3639
_codeFenceRegex = Format.CodeFenceStyle switch
3740
{
@@ -80,7 +83,7 @@ public override WriteState WriteState
8083

8184
protected internal abstract int Length { get; set; }
8285

83-
protected MarkdownCharEscaper Escaper { get; set; } = MarkdownCharEscaper.Default;
86+
protected MarkdownCharEscaper Escaper { get; set; }
8487

8588
private TableColumnInfo CurrentColumn => _tableColumns![_tableColumnIndex];
8689

@@ -704,7 +707,7 @@ public override void WriteEndLink(string url, string? title = null)
704707

705708
ThrowIfCannotWriteEnd(State.Link);
706709

707-
Escaper = MarkdownCharEscaper.Default;
710+
Escaper = Settings.EscaperProvider.GetDefaultEscaper();
708711
WriteRaw("]");
709712
WriteRaw("(");
710713
WriteString(url, MarkdownCharEscaper.LinkUrl);

src/DotMarkdown/MarkdownCharEscaper.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22

33
namespace DotMarkdown;
44

5-
internal abstract class MarkdownCharEscaper
5+
public abstract class MarkdownCharEscaper
66
{
7-
public static char DefaultEscapingChar { get; } = '\\';
7+
internal static char DefaultEscapingChar { get; } = '\\';
88

9-
public static MarkdownCharEscaper Default { get; } = new DefaultMarkdownEscaper();
9+
internal static MarkdownCharEscaper Default { get; } = new DefaultMarkdownEscaper();
1010

11-
public static MarkdownCharEscaper LinkText { get; } = new LinkTextMarkdownEscaper();
11+
internal static MarkdownCharEscaper LinkText { get; } = new LinkTextMarkdownEscaper();
1212

13-
public static MarkdownCharEscaper LinkUrl { get; } = new LinkUrlMarkdownEscaper();
13+
internal static MarkdownCharEscaper LinkUrl { get; } = new LinkUrlMarkdownEscaper();
1414

15-
public static MarkdownCharEscaper LinkTitle { get; } = new LinkTitleMarkdownEscaper();
15+
internal static MarkdownCharEscaper LinkTitle { get; } = new LinkTitleMarkdownEscaper();
1616

17-
public static MarkdownCharEscaper AngleBrackets { get; } = new AngleBracketsMarkdownEscaper();
17+
internal static MarkdownCharEscaper AngleBrackets { get; } = new AngleBracketsMarkdownEscaper();
1818

19-
public static MarkdownCharEscaper InlineCodeInsideTable { get; } = new InlineCodeInsideTableMarkdownEscaper();
19+
internal static MarkdownCharEscaper InlineCodeInsideTable { get; } = new InlineCodeInsideTableMarkdownEscaper();
2020

21-
public static MarkdownCharEscaper NoEscape { get; } = new NoEscapeMarkdownEscaper();
21+
internal static MarkdownCharEscaper NoEscape { get; } = new NoEscapeMarkdownEscaper();
2222

2323
public abstract bool ShouldBeEscaped(char value);
2424

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Copyright (c) Josef Pihrt. All rights reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
2+
3+
namespace DotMarkdown;
4+
5+
internal sealed class MarkdownEscaperProvider : IMarkdownEscaperProvider
6+
{
7+
public static IMarkdownEscaperProvider Default { get; } = new MarkdownEscaperProvider();
8+
9+
public MarkdownCharEscaper GetDefaultEscaper() => MarkdownCharEscaper.Default;
10+
}

src/DotMarkdown/MarkdownWriterSettings.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ public MarkdownWriterSettings(
1212
MarkdownFormat? format = null,
1313
string? newLineChars = null,
1414
NewLineHandling newLineHandling = NewLineHandling.Replace,
15-
bool closeOutput = false)
15+
bool closeOutput = false,
16+
IMarkdownEscaperProvider? escaper = null)
1617
{
1718
Format = format ?? MarkdownFormat.Default;
1819
NewLineChars = newLineChars ?? Environment.NewLine;
1920
NewLineHandling = newLineHandling;
2021
CloseOutput = closeOutput;
22+
EscaperProvider = escaper ?? MarkdownEscaperProvider.Default;
2123
}
2224

2325
public static MarkdownWriterSettings Default { get; } = new();
@@ -34,6 +36,8 @@ public MarkdownWriterSettings(
3436

3537
public bool CloseOutput { get; }
3638

39+
public IMarkdownEscaperProvider EscaperProvider { get; }
40+
3741
public MarkdownWriterSettings WithFormat(MarkdownFormat format)
3842
{
3943
return new MarkdownWriterSettings(format, NewLineChars, NewLineHandling, CloseOutput);

0 commit comments

Comments
 (0)