From dd99c974effc263cc1ca1a564816359bf9c5c6ea Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Thu, 30 Jan 2025 13:50:10 +0100 Subject: [PATCH] Normalize substitution keys to be case-insensitive. Substitution keys are now consistently converted to lowercase to ensure case-insensitive matching. This avoids potential mismatches caused by differing key casing in configurations and front matter. --- src/Elastic.Markdown/Myst/ParserContext.cs | 6 +++--- .../Myst/Substitution/SubstitutionParser.cs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Elastic.Markdown/Myst/ParserContext.cs b/src/Elastic.Markdown/Myst/ParserContext.cs index 7a8d8cf5a..15e469e05 100644 --- a/src/Elastic.Markdown/Myst/ParserContext.cs +++ b/src/Elastic.Markdown/Myst/ParserContext.cs @@ -45,18 +45,18 @@ public ParserContext( Configuration = configuration; foreach (var (key, value) in configuration.Substitutions) - Properties[key] = value; + Properties[key.ToLowerInvariant()] = value; if (frontMatter?.Properties is { } props) { - foreach (var (key, value) in props) + foreach (var (k, value) in props) { + var key = k.ToLowerInvariant(); if (configuration.Substitutions.TryGetValue(key, out _)) this.EmitError($"{{{key}}} can not be redeclared in front matter as its a global substitution"); else Properties[key] = value; } - } if (frontMatter?.Title is { } title) diff --git a/src/Elastic.Markdown/Myst/Substitution/SubstitutionParser.cs b/src/Elastic.Markdown/Myst/Substitution/SubstitutionParser.cs index 3e0a4ff0c..32d16bcb5 100644 --- a/src/Elastic.Markdown/Myst/Substitution/SubstitutionParser.cs +++ b/src/Elastic.Markdown/Myst/Substitution/SubstitutionParser.cs @@ -137,7 +137,7 @@ public override bool Match(InlineProcessor processor, ref StringSlice slice) startPosition -= openSticks; startPosition = Math.Max(startPosition, 0); - var key = content.ToString().Trim(['{', '}']); + var key = content.ToString().Trim(['{', '}']).ToLowerInvariant(); var found = false; var replacement = string.Empty; if (processor.Context?.Properties.TryGetValue(key, out var value) ?? false)