diff --git a/src/Docfx.App/Helpers/MetadataMerger.cs b/src/Docfx.App/Helpers/MetadataMerger.cs index ba81ef8e125..1a5b82e0a6c 100644 --- a/src/Docfx.App/Helpers/MetadataMerger.cs +++ b/src/Docfx.App/Helpers/MetadataMerger.cs @@ -65,7 +65,7 @@ private void MergePageViewModel(MetadataMergeParameters parameters) Metadata = parameters.Metadata, OutputBaseDir = parameters.OutputBaseDir, }, - new MarkdigServiceProvider().CreateMarkdownService( + new MarkdigMarkdownService( new MarkdownServiceParameters { BasePath = fc.DefaultBaseDir, diff --git a/src/Docfx.Build/DocumentBuilder.cs b/src/Docfx.Build/DocumentBuilder.cs index 97720840dfc..d54bb332f71 100644 --- a/src/Docfx.Build/DocumentBuilder.cs +++ b/src/Docfx.Build/DocumentBuilder.cs @@ -60,7 +60,6 @@ public void Build(IList parameters, string outputDirect throw new ArgumentException("Parameters are empty.", nameof(parameters)); } - var markdownServiceProvider = GetMarkdownServiceProvider(); var logCodesLogListener = new LogCodesLogListener(); Logger.RegisterListener(logCodesLogListener); @@ -124,7 +123,12 @@ public void Build(IList parameters, string outputDirect using (new LoggerPhaseScope("BuildCore")) { - manifests.Add(BuildCore(parameter, markdownServiceProvider)); + using var builder = new SingleDocumentBuilder + { + MetadataValidators = MetadataValidators.ToList(), + Processors = Processors, + }; + manifests.Add(builder.Build(parameter)); } } } @@ -199,25 +203,6 @@ select o.Value into v { Logger.UnregisterListener(logCodesLogListener); } - - IMarkdownServiceProvider GetMarkdownServiceProvider() - { - return new MarkdigServiceProvider - { - ConfigureMarkdig = parameters[0].ConfigureMarkdig - }; - } - } - - internal Manifest BuildCore(DocumentBuildParameters parameter, IMarkdownServiceProvider markdownServiceProvider) - { - using var builder = new SingleDocumentBuilder - { - MetadataValidators = MetadataValidators.ToList(), - Processors = Processors, - MarkdownServiceProvider = markdownServiceProvider, - }; - return builder.Build(parameter); } private List LoadSchemaDrivenDocumentProcessors(DocumentBuildParameters parameter) diff --git a/src/Docfx.Build/SingleDocumentBuilder.cs b/src/Docfx.Build/SingleDocumentBuilder.cs index 556a7db9a13..03ca3625542 100644 --- a/src/Docfx.Build/SingleDocumentBuilder.cs +++ b/src/Docfx.Build/SingleDocumentBuilder.cs @@ -3,6 +3,7 @@ using System.Collections.Immutable; using Docfx.Common; +using Docfx.MarkdigEngine; using Docfx.Plugins; namespace Docfx.Build.Engine; @@ -16,9 +17,6 @@ public class SingleDocumentBuilder : IDisposable public IEnumerable Processors { get; set; } public IEnumerable MetadataValidators { get; set; } - public IMarkdownServiceProvider MarkdownServiceProvider { get; set; } - - private IMarkdownService MarkdownService { get; set; } public static ImmutableList Build(IDocumentProcessor processor, DocumentBuildParameters parameters, IMarkdownService markdownService) { @@ -81,14 +79,6 @@ private Manifest BuildCore(DocumentBuildParameters parameters) ?? new TemplateProcessor(new EmptyResourceReader(), context, 16); using (new LoggerPhaseScope("Prepare", LogLevel.Verbose)) { - if (MarkdownService == null) - { - using (new LoggerPhaseScope("CreateMarkdownService", LogLevel.Verbose)) - { - MarkdownService = CreateMarkdownService(parameters, templateProcessor.Tokens.ToImmutableDictionary()); - context.MarkdownService = MarkdownService; - } - } Prepare( context, templateProcessor, @@ -142,6 +132,16 @@ private List GetInnerContexts( TemplateProcessor templateProcessor, IHostServiceCreator creator) { + var markdownService = new MarkdigMarkdownService( + new MarkdownServiceParameters + { + BasePath = parameters.Files.DefaultBaseDir, + TemplateDir = parameters.TemplateDir, + Extensions = parameters.MarkdownEngineParameters, + Tokens = templateProcessor.Tokens.ToImmutableDictionary(), + }, + configureMarkdig: parameters.ConfigureMarkdig); + var files = (from file in parameters.Files.EnumerateFiles().AsParallel().WithDegreeOfParallelism(parameters.MaxParallelism) from p in (from processor in processors let priority = processor.GetProcessingPriority(file) @@ -178,7 +178,7 @@ select LoggerPhaseScope.WithScope( () => creator.CreateHostService( parameters, templateProcessor, - MarkdownService, + markdownService, MetadataValidators, processor, item) @@ -244,18 +244,6 @@ private static string GetXrefMapFileNameWithGroup(DocumentBuildParameters parame return XRefMapFileName; } - private IMarkdownService CreateMarkdownService(DocumentBuildParameters parameters, ImmutableDictionary tokens) - { - return MarkdownServiceProvider.CreateMarkdownService( - new MarkdownServiceParameters - { - BasePath = parameters.Files.DefaultBaseDir, - TemplateDir = parameters.TemplateDir, - Extensions = parameters.MarkdownEngineParameters, - Tokens = tokens, - }); - } - public void Dispose() { using (new PerformanceScope("DisposeDocumentProcessors")) @@ -265,8 +253,6 @@ public void Dispose() Logger.LogVerbose($"Disposing processor {processor.Name} ..."); (processor as IDisposable)?.Dispose(); } - (MarkdownService as IDisposable)?.Dispose(); - MarkdownService = null; } } } diff --git a/src/Docfx.MarkdigEngine/MarkdigServiceProvider.cs b/src/Docfx.MarkdigEngine/MarkdigServiceProvider.cs deleted file mode 100644 index ec28130870b..00000000000 --- a/src/Docfx.MarkdigEngine/MarkdigServiceProvider.cs +++ /dev/null @@ -1,17 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using Docfx.Plugins; -using Markdig; - -namespace Docfx.MarkdigEngine; - -public class MarkdigServiceProvider : IMarkdownServiceProvider -{ - public Func ConfigureMarkdig { get; init; } - - public IMarkdownService CreateMarkdownService(MarkdownServiceParameters parameters) - { - return new MarkdigMarkdownService(parameters, ConfigureMarkdig); - } -} diff --git a/src/Docfx.Plugins/IMarkdownServiceProvider.cs b/src/Docfx.Plugins/IMarkdownServiceProvider.cs deleted file mode 100644 index 9f5b487438a..00000000000 --- a/src/Docfx.Plugins/IMarkdownServiceProvider.cs +++ /dev/null @@ -1,9 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -namespace Docfx.Plugins; - -public interface IMarkdownServiceProvider -{ - IMarkdownService CreateMarkdownService(MarkdownServiceParameters parameters); -} diff --git a/test/Docfx.Build.Common.Tests/MarkdownReaderTest.cs b/test/Docfx.Build.Common.Tests/MarkdownReaderTest.cs index e96c3abd402..40bae079af6 100644 --- a/test/Docfx.Build.Common.Tests/MarkdownReaderTest.cs +++ b/test/Docfx.Build.Common.Tests/MarkdownReaderTest.cs @@ -28,7 +28,7 @@ public void TestReadMarkdownAsOverwrite() File.WriteAllText(fullPath, content); var host = new HostService(null, Enumerable.Empty()) { - MarkdownService = new MarkdigServiceProvider().CreateMarkdownService(new MarkdownServiceParameters { BasePath = string.Empty }), + MarkdownService = new MarkdigMarkdownService(new MarkdownServiceParameters { BasePath = string.Empty }), SourceFiles = ImmutableDictionary.Create() }; diff --git a/test/Docfx.Build.Common.Tests/ModelAttributeHandlerTest.cs b/test/Docfx.Build.Common.Tests/ModelAttributeHandlerTest.cs index 971de5264e3..567dfd5b9b0 100644 --- a/test/Docfx.Build.Common.Tests/ModelAttributeHandlerTest.cs +++ b/test/Docfx.Build.Common.Tests/ModelAttributeHandlerTest.cs @@ -297,7 +297,7 @@ private static HandleModelAttributesContext GetDefaultContext() { Host = new HostService(null, Enumerable.Empty()) { - MarkdownService = new MarkdigServiceProvider().CreateMarkdownService(new MarkdownServiceParameters { BasePath = string.Empty }), + MarkdownService = new MarkdigMarkdownService(new MarkdownServiceParameters { BasePath = string.Empty }), SourceFiles = new Dictionary { { "~/test" , new FileAndType(Environment.CurrentDirectory, "test", DocumentType.Article)},