From 7515ff9f48a5b2f6d52d33846fe50a20f37844e7 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 19 Feb 2025 18:41:33 +0100 Subject: [PATCH] A few quick wins to help reduce allocations --- Elastic.Documentation.Tooling/DocumentationTooling.cs | 1 - .../Myst/CodeBlocks/SupportedLanguages.cs | 2 +- .../Myst/Directives/DirectiveParagraphParser.cs | 10 ++++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Elastic.Documentation.Tooling/DocumentationTooling.cs b/Elastic.Documentation.Tooling/DocumentationTooling.cs index 7b956b8b9..701099913 100644 --- a/Elastic.Documentation.Tooling/DocumentationTooling.cs +++ b/Elastic.Documentation.Tooling/DocumentationTooling.cs @@ -27,7 +27,6 @@ public static ServiceProvider CreateServiceProvider(ref string[] args, Action c.FormatterName = "condensed") ); - configure?.Invoke(services); return services.BuildServiceProvider(); diff --git a/src/Elastic.Markdown/Myst/CodeBlocks/SupportedLanguages.cs b/src/Elastic.Markdown/Myst/CodeBlocks/SupportedLanguages.cs index bc44bdeb7..6486d8d1d 100644 --- a/src/Elastic.Markdown/Myst/CodeBlocks/SupportedLanguages.cs +++ b/src/Elastic.Markdown/Myst/CodeBlocks/SupportedLanguages.cs @@ -186,7 +186,7 @@ public static class CodeBlock }; - public static HashSet Languages => new( + public static HashSet Languages { get; } = new( LanguageMapping.Keys .Concat(LanguageMapping.Values .SelectMany(v => v.Split(',').Select(a => a.Trim())) diff --git a/src/Elastic.Markdown/Myst/Directives/DirectiveParagraphParser.cs b/src/Elastic.Markdown/Myst/Directives/DirectiveParagraphParser.cs index 20af269cc..62b9d387a 100644 --- a/src/Elastic.Markdown/Myst/Directives/DirectiveParagraphParser.cs +++ b/src/Elastic.Markdown/Myst/Directives/DirectiveParagraphParser.cs @@ -26,13 +26,15 @@ public override BlockState TryContinue(BlockProcessor processor, Block block) if (block is not ParagraphBlock paragraphBlock) return base.TryContinue(processor, block); - var line = paragraphBlock.Lines.ToString(); - if (block.Parent is not DirectiveBlock) return base.TryContinue(processor, block); - // TODO only parse this if no content proceeds it (and not in a code fence) - return line.StartsWith(':') + var lines = paragraphBlock.Lines.Lines; + if (lines.Length < 1) + return base.TryContinue(processor, block); + + var line = lines[0]; + return line.Slice.AsSpan().StartsWith(':') ? BlockState.BreakDiscard : base.TryContinue(processor, block); }