Browse Source

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.
pull/23666/head
Ahmet Çelik 5 months ago
parent
commit
fd1c8e6c42
  1. 3
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs
  2. 3
      modules/docs/src/Volo.Docs.Web/TableOfContents/ITocGeneratorService.cs
  3. 16
      modules/docs/src/Volo.Docs.Web/TableOfContents/TocGeneratorService.cs
  4. 8
      modules/docs/src/Volo.Docs.Web/TableOfContents/TocHeading.cs

3
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.Projects;
using Volo.Docs.TableOfContents; using Volo.Docs.TableOfContents;
using Volo.Docs.Utils; using Volo.Docs.Utils;
using static Volo.Docs.TableOfContents.TocGeneratorService;
namespace Volo.Docs.Pages.Documents.Project namespace Volo.Docs.Pages.Documents.Project
{ {
@ -77,7 +76,7 @@ namespace Volo.Docs.Pages.Documents.Project
public string DocumentsUrlPrefix { get; set; } public string DocumentsUrlPrefix { get; set; }
public List<Heading> TocHeadings { get; set; } = []; public List<TocHeading> TocHeadings { get; set; } = [];
public bool ShowProjectsCombobox { get; set; } public bool ShowProjectsCombobox { get; set; }

3
modules/docs/src/Volo.Docs.Web/TableOfContents/ITocGeneratorService.cs

@ -1,10 +1,9 @@
using System.Collections.Generic; using System.Collections.Generic;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using static Volo.Docs.TableOfContents.TocGeneratorService;
namespace Volo.Docs.TableOfContents; namespace Volo.Docs.TableOfContents;
public interface ITocGeneratorService : IApplicationService public interface ITocGeneratorService : IApplicationService
{ {
List<Heading> GenerateTocHeadings(string markdownContent); List<TocHeading> GenerateTocHeadings(string markdownContent);
} }

16
modules/docs/src/Volo.Docs.Web/TableOfContents/TocGeneratorService.cs

@ -13,9 +13,7 @@ namespace Volo.Docs.TableOfContents;
public class TocGeneratorService : ITocGeneratorService, ITransientDependency public class TocGeneratorService : ITocGeneratorService, ITransientDependency
{ {
public record Heading(int Level, string Text, string Id); public List<TocHeading> GenerateTocHeadings(string markdownContent)
public List<Heading> GenerateTocHeadings(string markdownContent)
{ {
if (markdownContent.IsNullOrWhiteSpace()) if (markdownContent.IsNullOrWhiteSpace())
{ {
@ -28,7 +26,7 @@ public class TocGeneratorService : ITocGeneratorService, ITransientDependency
var pipeline = pipelineBuilder.Build(); var pipeline = pipelineBuilder.Build();
var headings = new List<Heading>(); var headings = new List<TocHeading>();
var document = Markdig.Markdown.Parse(markdownContent, pipeline); var document = Markdig.Markdown.Parse(markdownContent, pipeline);
@ -36,11 +34,11 @@ public class TocGeneratorService : ITocGeneratorService, ITransientDependency
foreach (var headingBlock in headingBlocks) foreach (var headingBlock in headingBlocks)
{ {
headings.Add(new Heading( headings.Add(new TocHeading {
headingBlock.Level, Level = headingBlock.Level,
GetPlainText(headingBlock.Inline), Text = GetPlainText(headingBlock.Inline),
headingBlock.GetAttributes()?.Id Id = headingBlock.GetAttributes()?.Id
)); });
} }
return headings; return headings;

8
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; }
}
Loading…
Cancel
Save