From fd1c8e6c425559fe3c84534e18b2eeff61be2f3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87elik?= Date: Thu, 11 Sep 2025 11:47:25 +0300 Subject: [PATCH] Refactor TOC heading to use TocHeading record Replaces the internal Heading record in TocGeneratorService with a new public TocHeading record class. Updates all references and method signatures to use TocHeading, improving code clarity and reusability. --- .../Pages/Documents/Project/Index.cshtml.cs | 3 +-- .../TableOfContents/ITocGeneratorService.cs | 3 +-- .../TableOfContents/TocGeneratorService.cs | 16 +++++++--------- .../Volo.Docs.Web/TableOfContents/TocHeading.cs | 8 ++++++++ 4 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 modules/docs/src/Volo.Docs.Web/TableOfContents/TocHeading.cs diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index bd0d7a00c3..a8833e963a 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -29,7 +29,6 @@ using Volo.Docs.Models; using Volo.Docs.Projects; using Volo.Docs.TableOfContents; using Volo.Docs.Utils; -using static Volo.Docs.TableOfContents.TocGeneratorService; namespace Volo.Docs.Pages.Documents.Project { @@ -77,7 +76,7 @@ namespace Volo.Docs.Pages.Documents.Project public string DocumentsUrlPrefix { get; set; } - public List TocHeadings { get; set; } = []; + public List TocHeadings { get; set; } = []; public bool ShowProjectsCombobox { get; set; } diff --git a/modules/docs/src/Volo.Docs.Web/TableOfContents/ITocGeneratorService.cs b/modules/docs/src/Volo.Docs.Web/TableOfContents/ITocGeneratorService.cs index f92abab1f0..3ccb0faa56 100644 --- a/modules/docs/src/Volo.Docs.Web/TableOfContents/ITocGeneratorService.cs +++ b/modules/docs/src/Volo.Docs.Web/TableOfContents/ITocGeneratorService.cs @@ -1,10 +1,9 @@ using System.Collections.Generic; using Volo.Abp.Application.Services; -using static Volo.Docs.TableOfContents.TocGeneratorService; namespace Volo.Docs.TableOfContents; public interface ITocGeneratorService : IApplicationService { - List GenerateTocHeadings(string markdownContent); + List GenerateTocHeadings(string markdownContent); } diff --git a/modules/docs/src/Volo.Docs.Web/TableOfContents/TocGeneratorService.cs b/modules/docs/src/Volo.Docs.Web/TableOfContents/TocGeneratorService.cs index 797f8215e6..956b9f7e09 100644 --- a/modules/docs/src/Volo.Docs.Web/TableOfContents/TocGeneratorService.cs +++ b/modules/docs/src/Volo.Docs.Web/TableOfContents/TocGeneratorService.cs @@ -13,9 +13,7 @@ namespace Volo.Docs.TableOfContents; public class TocGeneratorService : ITocGeneratorService, ITransientDependency { - public record Heading(int Level, string Text, string Id); - - public List GenerateTocHeadings(string markdownContent) + public List GenerateTocHeadings(string markdownContent) { if (markdownContent.IsNullOrWhiteSpace()) { @@ -28,7 +26,7 @@ public class TocGeneratorService : ITocGeneratorService, ITransientDependency var pipeline = pipelineBuilder.Build(); - var headings = new List(); + var headings = new List(); var document = Markdig.Markdown.Parse(markdownContent, pipeline); @@ -36,11 +34,11 @@ public class TocGeneratorService : ITocGeneratorService, ITransientDependency foreach (var headingBlock in headingBlocks) { - headings.Add(new Heading( - headingBlock.Level, - GetPlainText(headingBlock.Inline), - headingBlock.GetAttributes()?.Id - )); + headings.Add(new TocHeading { + Level = headingBlock.Level, + Text = GetPlainText(headingBlock.Inline), + Id = headingBlock.GetAttributes()?.Id + }); } return headings; diff --git a/modules/docs/src/Volo.Docs.Web/TableOfContents/TocHeading.cs b/modules/docs/src/Volo.Docs.Web/TableOfContents/TocHeading.cs new file mode 100644 index 0000000000..3fdb775752 --- /dev/null +++ b/modules/docs/src/Volo.Docs.Web/TableOfContents/TocHeading.cs @@ -0,0 +1,8 @@ +namespace Volo.Docs.TableOfContents; + +public record TocHeading +{ + public int Level { get; set; } + public string Text { get; set; } + public string Id { get; set; } +}