Skip to content

Commit

Permalink
Merge pull request #9 from zack4485/patch-10
Browse files Browse the repository at this point in the history
Enabling anchor links
  • Loading branch information
mythz authored Oct 31, 2024
2 parents 57fcc2e + b1b88fc commit f071642
Showing 1 changed file with 29 additions and 9 deletions.
38 changes: 29 additions & 9 deletions MyApp/MarkdownPagesBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -113,12 +113,12 @@ public abstract class MarkdownPagesBase<T>(ILogger log, IWebHostEnvironment env,
public abstract string Id { get; }
public IVirtualFiles VirtualFiles => fs;

public virtual MarkdownPipeline CreatePipeline()
public virtual MarkdownPipeline CreatePipeline(string path)
{
var builder = new MarkdownPipelineBuilder()
.UseYamlFrontMatter()
.UseAdvancedExtensions()
.UseAutoLinkHeadings()
.UseAutoLinkHeadings(this, path)
.UseHeadingsMap()
.UseCustomContainers(MarkdigConfig.Instance.ConfigureContainers);
MarkdigConfig.Instance.ConfigurePipeline?.Invoke(builder);
Expand Down Expand Up @@ -149,9 +149,9 @@ public virtual List<T> Fresh(List<T> docs)
return doc;
}

public virtual T CreateMarkdownFile(string content, TextWriter writer, MarkdownPipeline? pipeline = null)
public virtual T CreateMarkdownFile(string path, string content, TextWriter writer, MarkdownPipeline? pipeline = null)
{
pipeline ??= CreatePipeline();
pipeline ??= CreatePipeline(path);

var renderer = new Markdig.Renderers.HtmlRenderer(writer);
pipeline.Setup(renderer);
Expand Down Expand Up @@ -190,7 +190,7 @@ public virtual T CreateMarkdownFile(string content, TextWriter writer, MarkdownP

var writer = new StringWriter();

var doc = CreateMarkdownFile(content, writer, pipeline);
var doc = CreateMarkdownFile(string.Empty, content, writer, pipeline);
doc.Title ??= file.Name;

doc.Path = file.VirtualPath;
Expand Down Expand Up @@ -278,7 +278,7 @@ public void LoadFrom(string fromDirectory)
.ToList();
log.LogInformation("Found {Count} includes", files.Count);

var pipeline = CreatePipeline();
var pipeline = CreatePipeline(string.Empty);

foreach (var file in files)
{
Expand Down Expand Up @@ -322,6 +322,8 @@ public struct HeadingInfo(int level, string id, string content)
/// <seealso cref="HtmlObjectRenderer{TObject}" />
public class AutoLinkHeadingRenderer : HtmlObjectRenderer<HeadingBlock>
{
private string _relativeHtmlPath;

private static readonly string[] HeadingTexts = [
"h1",
"h2",
Expand All @@ -330,6 +332,11 @@ public class AutoLinkHeadingRenderer : HtmlObjectRenderer<HeadingBlock>
"h5",
"h6"
];

public AutoLinkHeadingRenderer(string relativeHtmlPath)
{
this._relativeHtmlPath = relativeHtmlPath;
}

public event Action<HeadingBlock>? OnHeading;

Expand Down Expand Up @@ -942,9 +949,22 @@ public static class MarkdigExtensions
/// <summary>
/// Uses the auto-identifier extension.
/// </summary>
public static MarkdownPipelineBuilder UseAutoLinkHeadings(this MarkdownPipelineBuilder pipeline)
public static MarkdownPipelineBuilder UseAutoLinkHeadings(this MarkdownPipelineBuilder pipeline, object input, string path)
{
pipeline.Extensions.AddIfNotAlready(new AutoLinkHeadingsExtension());
var relativeHtmlPath = string.Empty;

if(input.GetType() == typeof(MarkdownBlog))
{
var post = ((MarkdownBlog)input).VisiblePosts.FirstOrDefault(x => path.Contains(x.FileName));

if(post != null)
{
relativeHtmlPath = $"/posts/{post.Slug}";
}
}

pipeline.Extensions.AddIfNotAlready(new AutoLinkHeadingsExtension(relativeHtmlPath));

Check failure on line 966 in MyApp/MarkdownPagesBase.cs

View workflow job for this annotation

GitHub Actions / build

'AutoLinkHeadingsExtension' does not contain a constructor that takes 1 arguments

Check failure on line 966 in MyApp/MarkdownPagesBase.cs

View workflow job for this annotation

GitHub Actions / build

'AutoLinkHeadingsExtension' does not contain a constructor that takes 1 arguments

return pipeline;
}

Expand Down Expand Up @@ -981,4 +1001,4 @@ public class MarkdownMenuItem
{
public string Text { get; set; }
public string Link { get; set; }
}
}

0 comments on commit f071642

Please sign in to comment.