Skip to content

Commit c0cc51e

Browse files
authored
chore: Remove options from MarkdigExtensionSetting (#9830)
remove options, update emoji to use enum
1 parent 3be044e commit c0cc51e

File tree

10 files changed

+24
-111
lines changed

10 files changed

+24
-111
lines changed

src/Docfx.MarkdigEngine.Extensions/MarkdigExtensionSetting.cs

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class MarkdigExtensionSetting
2929
/// <summary>
3030
/// Initializes a new instance of the <see cref="MarkdigExtensionSetting"/> class.
3131
/// </summary>
32-
public MarkdigExtensionSetting(string name, JsonObject? options = null)
32+
public MarkdigExtensionSetting(string name, JsonNode? options = null)
3333
{
3434
Name = name;
3535
if (options != null)
@@ -58,49 +58,8 @@ public MarkdigExtensionSetting(string name, JsonObject? options = null)
5858
/// </summary>
5959
public T GetOptions<T>(T fallbackValue)
6060
{
61-
if (Options == null)
62-
{
63-
return fallbackValue;
64-
}
65-
66-
var jsonObject = JsonSerializer.SerializeToNode(Options)?.AsObject();
67-
68-
if (jsonObject != null
69-
&& jsonObject.TryGetPropertyValue("options", out var optionsNode)
70-
&& optionsNode != null)
71-
{
72-
return optionsNode.Deserialize<T>(DefaultSerializerOptions)!;
73-
}
74-
else
75-
{
76-
return fallbackValue;
77-
}
78-
}
79-
80-
/// <summary>
81-
/// Gets markdig extension options as specified class object.
82-
/// </summary>
83-
public T GetOptionsValue<T>(string key, T fallbackValue)
84-
{
85-
if (Options == null)
86-
{
87-
return fallbackValue;
88-
}
89-
90-
var jsonNode = JsonSerializer.SerializeToNode(Options)?.AsObject();
91-
92-
// Try to read options property that have specified key.
93-
if (jsonNode != null
94-
&& jsonNode.TryGetPropertyValue("options", out var optionsNode)
95-
&& optionsNode != null
96-
&& optionsNode.AsObject().TryGetPropertyValue(key, out var valueNode))
97-
{
98-
return valueNode!.GetValue<T>()!;
99-
}
100-
else
101-
{
102-
return fallbackValue;
103-
}
61+
return Options is null ? fallbackValue
62+
: JsonSerializer.Deserialize<T>(JsonSerializer.Serialize(Options), DefaultSerializerOptions) ?? fallbackValue;
10463
}
10564

10665
/// <summary>

src/Docfx.MarkdigEngine.Extensions/MarkdownExtensions.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System.Diagnostics;
5-
using System.Text.Json;
65
using Markdig;
76
using Markdig.Extensions.AutoIdentifiers;
87
using Markdig.Extensions.AutoLinks;
@@ -18,6 +17,8 @@ namespace Docfx.MarkdigEngine.Extensions;
1817

1918
public static class MarkdownExtensions
2019
{
20+
enum EmojiMappingOption { Default, DefaultAndSmileys }
21+
2122
public static MarkdownPipelineBuilder UseDocfxExtensions(
2223
this MarkdownPipelineBuilder pipeline, MarkdownContext context,
2324
Dictionary<string, string> notes = null, PlantUmlOptions plantUml = null)
@@ -121,10 +122,11 @@ private static bool TryAddOrReplaceMarkdigExtension(
121122
// EmojiExtension (Docfx default: enableSmileys: false)
122123
case "emojis":
123124
{
124-
var enableSmileys = extension.GetOptions(fallbackValue: true);
125-
EmojiMapping emojiMapping = enableSmileys
126-
? EmojiMapping.DefaultEmojisAndSmileysMapping
127-
: EmojiMapping.DefaultEmojisOnlyMapping;
125+
var emojiMapping = extension.GetOptions(fallbackValue: EmojiMappingOption.DefaultAndSmileys) switch
126+
{
127+
EmojiMappingOption.DefaultAndSmileys => EmojiMapping.DefaultEmojisAndSmileysMapping,
128+
_ => EmojiMapping.DefaultEmojisOnlyMapping,
129+
};
128130
pipeline.Extensions.ReplaceOrAdd<EmojiExtension>(new EmojiExtension(emojiMapping));
129131
return true;
130132
}

test/Docfx.MarkdigEngine.Extensions.Tests/MarkdigBuiltinExtensionTests/AutoIdentifierTest.cs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4-
using System.Text.Json.Nodes;
54
using Markdig.Extensions.AutoIdentifiers;
65
using Xunit;
76

@@ -23,10 +22,7 @@ public void AutoIdentifierTest_DocfxDefault()
2322

2423
TestUtility.VerifyMarkup(content, expected);
2524
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
26-
new("AutoIdentifiers", new JsonObject
27-
{
28-
["options"] = "GitHub",
29-
})
25+
new("AutoIdentifiers", "GitHub")
3026
]);
3127
}
3228

@@ -40,17 +36,11 @@ public void AutoIdentifierTest_MarkdigDefault()
4036
TestUtility.VerifyMarkup(content, expected, optionalExtensions: ["AutoIdentifiers"]);
4137

4238
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
43-
new("AutoIdentifiers", new JsonObject
44-
{
45-
["options"] = "Default",
46-
})
39+
new("AutoIdentifiers", "Default")
4740
]);
4841

4942
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
50-
new("AutoIdentifiers", new JsonObject
51-
{
52-
["options"] = "AutoLink, AllowOnlyAscii", // Same as Default option.
53-
})
43+
new("AutoIdentifiers", "AutoLink, AllowOnlyAscii")
5444
]);
5545
}
5646

@@ -61,10 +51,7 @@ public void AutoIdentifierTest_None()
6151
var expected = @"<h1 id=""this-is-a-heading_with.and"">This - is a &amp;@! heading _ with . and ! -</h1>";
6252

6353
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
64-
new("AutoIdentifiers", new JsonObject
65-
{
66-
["options"] = "None",
67-
})
54+
new("AutoIdentifiers", "None")
6855
]);
6956
}
7057
}

test/Docfx.MarkdigEngine.Extensions.Tests/MarkdigBuiltinExtensionTests/AutoLinkTest.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System.Text.Json;
5-
using System.Text.Json.Nodes;
65
using Docfx.MarkdigEngine.Extensions;
76
using Markdig.Extensions.AutoLinks;
87
using Xunit;
@@ -41,10 +40,7 @@ public void AutoLinkTest_Custom()
4140
var expected = @"<p>Sample URL (<a href=""http://www.google.com"" target=""_blank"">http://www.google.com</a>)</p>";
4241

4342
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
44-
new("AutoLinks", new JsonObject
45-
{
46-
["options"] = JsonSerializer.SerializeToNode(options, MarkdigExtensionSettingConverter.DefaultSerializerOptions),
47-
})
43+
new("AutoLinks", JsonSerializer.SerializeToNode(options, MarkdigExtensionSettingConverter.DefaultSerializerOptions))
4844
]);
4945
}
5046
}

test/Docfx.MarkdigEngine.Extensions.Tests/MarkdigBuiltinExtensionTests/EmojiTest.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4-
using System.Text.Json.Nodes;
54
using Markdig.Extensions.Emoji;
65
using Xunit;
76

@@ -41,10 +40,7 @@ public void EmojiTest_Smileys_Enabled()
4140
var expected = @"<p>😃</p>";
4241

4342
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
44-
new("Emojis", new JsonObject
45-
{
46-
["options"] = true
47-
}),
43+
new("Emojis", "DefaultAndSmileys"),
4844
]);
4945
}
5046

@@ -55,10 +51,7 @@ public void EmojiTest_Smileys_Disabled()
5551
var expected = @"<p>:)</p>";
5652

5753
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
58-
new("Emojis", new JsonObject
59-
{
60-
["options"] = false,
61-
}),
54+
new("Emojis", "Default"),
6255
]);
6356
}
6457
}

test/Docfx.MarkdigEngine.Extensions.Tests/MarkdigBuiltinExtensionTests/EmphasisExtraTest.cs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Licensed to the .NET Foundation under one or more agreements.
22
// The .NET Foundation licenses this file to you under the MIT license.
33

4-
using System.Text.Json.Nodes;
54
using Markdig.Extensions.EmphasisExtras;
65
using Xunit;
76

@@ -63,10 +62,7 @@ public void EmphasisExtraTest_SuperscriptAndSubscript()
6362
{
6463
var expected = @"<p>H<sub>2</sub>O is a liquid. 2<sup>10</sup> is 1024</p>";
6564
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
66-
new("EmphasisExtras", new JsonObject
67-
{
68-
["options"] = "Superscript, Subscript",
69-
})]);
65+
new("EmphasisExtras", "Superscript, Subscript")]);
7066
}
7167
}
7268

@@ -84,10 +80,7 @@ public void EmphasisExtraTest_Inserted()
8480
{
8581
var expected = @"<p><ins>Inserted text</ins></p>";
8682
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
87-
new("EmphasisExtras", new JsonObject
88-
{
89-
["options"] = "Inserted",
90-
})]);
83+
new("EmphasisExtras", "Inserted")]);
9184
}
9285
}
9386

@@ -105,10 +98,7 @@ public void EmphasisExtraTest_Marked()
10598
{
10699
var expected = @"<p><mark>Marked text</mark></p>";
107100
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
108-
new("EmphasisExtras", new JsonObject
109-
{
110-
["options"] = "Marked",
111-
})]);
101+
new("EmphasisExtras", "Marked")]);
112102
}
113103
}
114104
}

test/Docfx.MarkdigEngine.Extensions.Tests/MarkdigBuiltinExtensionTests/MediaLinksTest.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System.Text.Json;
5-
using System.Text.Json.Nodes;
65
using Docfx.MarkdigEngine.Extensions;
76
using Markdig.Extensions.MediaLinks;
87
using Xunit;
@@ -44,10 +43,7 @@ public void MediaLinksTest_Custom()
4443
var expected = $"""<p><video class="{options.Class}" width="{options.Width}" height="{options.Height}"><source type="video/mp4" src="https://example.com/video.mp4"></source></video></p>""";
4544

4645
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
47-
new("MediaLinks", new JsonObject
48-
{
49-
["options"] = JsonSerializer.SerializeToNode(options, MarkdigExtensionSettingConverter.DefaultSerializerOptions),
50-
})
46+
new("MediaLinks", JsonSerializer.SerializeToNode(options, MarkdigExtensionSettingConverter.DefaultSerializerOptions))
5147
]);
5248
}
5349
}

test/Docfx.MarkdigEngine.Extensions.Tests/MarkdigBuiltinExtensionTests/PipeTableTest.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System.Text.Json;
5-
using System.Text.Json.Nodes;
65
using Docfx.MarkdigEngine.Extensions;
76
using Markdig.Extensions.Tables;
87
using Xunit;
@@ -86,10 +85,7 @@ public void PipeTableTest_Custom()
8685

8786
TestUtility.VerifyMarkup(content, expected, optionalExtensions: ["gfm-pipetables"]);
8887
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
89-
new ("PipeTables", new JsonObject
90-
{
91-
["options"] = JsonSerializer.SerializeToNode(options, MarkdigExtensionSettingConverter.DefaultSerializerOptions),
92-
})
88+
new ("PipeTables", JsonSerializer.SerializeToNode(options, MarkdigExtensionSettingConverter.DefaultSerializerOptions))
9389
]);
9490
}
9591
}

test/Docfx.MarkdigEngine.Extensions.Tests/MarkdigBuiltinExtensionTests/SmartyPantsTest.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33

44
using System.Text.Json;
5-
using System.Text.Json.Nodes;
6-
using System.Text.Json.Serialization;
75
using Docfx.MarkdigEngine.Extensions;
86
using Markdig.Extensions.SmartyPants;
97
using Xunit;
@@ -52,10 +50,7 @@ public void SmartyPantsTest_Custom()
5250
string expected = "<p>This is a <<text with>> a another text'</p>";
5351

5452
TestUtility.VerifyMarkup(content, expected, optionalExtensions: [
55-
new("SmartyPants", new JsonObject
56-
{
57-
["options"] = JsonSerializer.SerializeToNode(options, MarkdigExtensionSettingConverter.DefaultSerializerOptions),
58-
})
53+
new("SmartyPants", JsonSerializer.SerializeToNode(options, MarkdigExtensionSettingConverter.DefaultSerializerOptions))
5954
]);
6055
}
6156
}

test/docfx.Tests/Api.verified.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3572,11 +3572,10 @@ public void Setup(Markdig.MarkdownPipeline pipeline, Markdig.Renderers.IMarkdown
35723572
[System.Diagnostics.DebuggerDisplay("Name = {Name}")]
35733573
public class MarkdigExtensionSetting
35743574
{
3575-
public MarkdigExtensionSetting(string name, System.Text.Json.Nodes.JsonObject? options = null) { }
3575+
public MarkdigExtensionSetting(string name, System.Text.Json.Nodes.JsonNode? options = null) { }
35763576
public string Name { get; init; }
35773577
public System.Text.Json.JsonElement? Options { get; init; }
35783578
public T GetOptions<T>(T fallbackValue) { }
3579-
public T GetOptionsValue<T>(string key, T fallbackValue) { }
35803579
public static Docfx.MarkdigEngine.Extensions.MarkdigExtensionSetting op_Implicit(string name) { }
35813580
}
35823581
public class MarkdownContext

0 commit comments

Comments
 (0)