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.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<Heading> TocHeadings { get; set; } = [];
public List<TocHeading> TocHeadings { 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 Volo.Abp.Application.Services;
using static Volo.Docs.TableOfContents.TocGeneratorService;
namespace Volo.Docs.TableOfContents;
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 record Heading(int Level, string Text, string Id);
public List<Heading> GenerateTocHeadings(string markdownContent)
public List<TocHeading> GenerateTocHeadings(string markdownContent)
{
if (markdownContent.IsNullOrWhiteSpace())
{
@ -28,7 +26,7 @@ public class TocGeneratorService : ITocGeneratorService, ITransientDependency
var pipeline = pipelineBuilder.Build();
var headings = new List<Heading>();
var headings = new List<TocHeading>();
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;

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