diff --git a/src/Markdig/Markdown.cs b/src/Markdig/Markdown.cs
index 3e1d4248..c0effe38 100644
--- a/src/Markdig/Markdown.cs
+++ b/src/Markdig/Markdown.cs
@@ -54,7 +54,7 @@ private static MarkdownPipeline GetPipeline(MarkdownPipeline? pipeline, string m
/// The pipeline.
/// A parser context used for the parsing.
/// A normalized markdown text.
- public static string Normalize(string markdown, NormalizeOptions? options = null, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
+ public static string Normalize([StringSyntax("Markdown")] string markdown, NormalizeOptions? options = null, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
{
var writer = new StringWriter();
Normalize(markdown, writer, options, pipeline, context);
@@ -70,7 +70,7 @@ public static string Normalize(string markdown, NormalizeOptions? options = null
/// The pipeline.
/// A parser context used for the parsing.
/// A normalized markdown text.
- public static MarkdownDocument Normalize(string markdown, TextWriter writer, NormalizeOptions? options = null, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
+ public static MarkdownDocument Normalize([StringSyntax("Markdown")] string markdown, TextWriter writer, NormalizeOptions? options = null, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
{
if (markdown is null) ThrowHelper.ArgumentNullException_markdown();
@@ -95,7 +95,7 @@ public static MarkdownDocument Normalize(string markdown, TextWriter writer, Nor
/// A parser context used for the parsing.
/// The HTML string.
/// If is null.
- public static string ToHtml(string markdown, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
+ public static string ToHtml([StringSyntax("Markdown")] string markdown, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
{
if (markdown is null) ThrowHelper.ArgumentNullException_markdown();
@@ -159,7 +159,7 @@ public static void ToHtml(this MarkdownDocument document, TextWriter writer, Mar
/// A parser context used for the parsing.
/// The Markdown document that has been parsed
/// if reader or writer variable are null
- public static MarkdownDocument ToHtml(string markdown, TextWriter writer, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
+ public static MarkdownDocument ToHtml([StringSyntax("Markdown")] string markdown, TextWriter writer, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
{
if (markdown is null) ThrowHelper.ArgumentNullException_markdown();
if (writer is null) ThrowHelper.ArgumentNullException_writer();
@@ -181,7 +181,7 @@ public static MarkdownDocument ToHtml(string markdown, TextWriter writer, Markdo
/// The pipeline used for the conversion.
/// A parser context used for the parsing.
/// if markdown or writer variable are null
- public static object Convert(string markdown, IMarkdownRenderer renderer, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
+ public static object Convert([StringSyntax("Markdown")] string markdown, IMarkdownRenderer renderer, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
{
if (markdown is null) ThrowHelper.ArgumentNullException_markdown();
if (renderer is null) ThrowHelper.ArgumentNullException(nameof(renderer));
@@ -201,7 +201,7 @@ public static object Convert(string markdown, IMarkdownRenderer renderer, Markdo
/// Whether to parse trivia such as whitespace, extra heading characters and unescaped string values.
/// An AST Markdown document
/// if markdown variable is null
- public static MarkdownDocument Parse(string markdown, bool trackTrivia = false)
+ public static MarkdownDocument Parse([StringSyntax("Markdown")] string markdown, bool trackTrivia = false)
{
if (markdown is null) ThrowHelper.ArgumentNullException_markdown();
@@ -218,7 +218,7 @@ public static MarkdownDocument Parse(string markdown, bool trackTrivia = false)
/// A parser context used for the parsing.
/// An AST Markdown document
/// if markdown variable is null
- public static MarkdownDocument Parse(string markdown, MarkdownPipeline? pipeline, MarkdownParserContext? context = null)
+ public static MarkdownDocument Parse([StringSyntax("Markdown")] string markdown, MarkdownPipeline? pipeline, MarkdownParserContext? context = null)
{
if (markdown is null) ThrowHelper.ArgumentNullException_markdown();
@@ -236,7 +236,7 @@ public static MarkdownDocument Parse(string markdown, MarkdownPipeline? pipeline
/// A parser context used for the parsing.
/// The Markdown document that has been parsed
/// if reader or writer variable are null
- public static MarkdownDocument ToPlainText(string markdown, TextWriter writer, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
+ public static MarkdownDocument ToPlainText([StringSyntax("Markdown")] string markdown, TextWriter writer, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
{
if (markdown is null) ThrowHelper.ArgumentNullException_markdown();
if (writer is null) ThrowHelper.ArgumentNullException_writer();
@@ -268,7 +268,7 @@ public static MarkdownDocument ToPlainText(string markdown, TextWriter writer, M
/// A parser context used for the parsing.
/// The result of the conversion
/// if markdown variable is null
- public static string ToPlainText(string markdown, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
+ public static string ToPlainText([StringSyntax("Markdown")] string markdown, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
{
if (markdown is null) ThrowHelper.ArgumentNullException_markdown();
var writer = new StringWriter();
diff --git a/src/Markdig/Parsers/MarkdownParser.cs b/src/Markdig/Parsers/MarkdownParser.cs
index d7c67b17..082242f6 100644
--- a/src/Markdig/Parsers/MarkdownParser.cs
+++ b/src/Markdig/Parsers/MarkdownParser.cs
@@ -2,6 +2,7 @@
// This file is licensed under the BSD-Clause 2 license.
// See the license.txt file in the project root for more information.
+using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;
using Markdig.Helpers;
@@ -28,7 +29,7 @@ public static class MarkdownParser
/// A parser context used for the parsing.
/// An AST Markdown document
/// if reader variable is null
- public static MarkdownDocument Parse(string text, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
+ public static MarkdownDocument Parse([StringSyntax("Markdown")] string text, MarkdownPipeline? pipeline = null, MarkdownParserContext? context = null)
{
if (text is null) ThrowHelper.ArgumentNullException_text();
diff --git a/src/Markdig/Polyfills/StringSyntaxAttribute.cs b/src/Markdig/Polyfills/StringSyntaxAttribute.cs
new file mode 100644
index 00000000..482c1eec
--- /dev/null
+++ b/src/Markdig/Polyfills/StringSyntaxAttribute.cs
@@ -0,0 +1,29 @@
+#if !NET7_0_OR_GREATER
+namespace System.Diagnostics.CodeAnalysis;
+
+[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
+internal sealed class StringSyntaxAttribute : Attribute
+{
+ public const string Regex = nameof(Regex);
+ public const string Uri = nameof(Uri);
+ public const string Json = nameof(Json);
+ public const string Xml = nameof(Xml);
+ public const string CompositeFormat = nameof(CompositeFormat);
+
+ public StringSyntaxAttribute(string syntax)
+ {
+ Syntax = syntax;
+ Arguments = Array.Empty