Leisn.MarkdigToc 0.1.3

Install-Package Leisn.MarkdigToc -Version 0.1.3
dotnet add package Leisn.MarkdigToc --version 0.1.3
<PackageReference Include="Leisn.MarkdigToc" Version="0.1.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Leisn.MarkdigToc --version 0.1.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Leisn.MarkdigToc, 0.1.3"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Leisn.MarkdigToc as a Cake Addin
#addin nuget:?package=Leisn.MarkdigToc&version=0.1.3

// Install Leisn.MarkdigToc as a Cake Tool
#tool nuget:?package=Leisn.MarkdigToc&version=0.1.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

MarkdigToc NuGet

MarkdigToc is a extension for Markdig to generate table of content by parse [toc] in markdown document.

Currently just for render to html.

Usage

Use with default options:

var pipeline = new MarkdownPipelineBuilder()
    .UseAdvancedExtensions() // Add most of all advanced extensions
    .UseTableOfContent() //Add MarkdigToc extension
    .Build();
var result=Markdown.ToHtml(@"
[TOC]
# t1
## t1.1
### t1.1.1
### t1.1.2
## t1.2
");
Console.WriteLine(result);

Use with custom options:

var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions() 
    .UseTableOfContent(
        tocAction: opt=>{ // toc options },
        idAction: opt=>{ // auto id options }
	).Build();

// ...

Options

CustomAutoIdOptions

Code copied from AutoIdentifierExtension, then added some code and options.

NOTICE: When use UseTableOfContent, it will auto replace (AutoIdentifierExtension) or add (CustomAutoIdExtension).

  • AutoIdentifierOptions Options: Enum: default AutoIdentifierOptions.Default

    Option from AutoIdentifierExtension:

    • None
    • AutoLink
    • AllowOnlyAscii
    • Default
    • Github
  • GenerateHeadingId? HeadingIdGenerator: Delegate: defalut null

    Delegate for handle custom heading id creation.

    Arguments:

    • level: int

      The level of current heading, usually be count of char #.

    • content: string

      The content of current heading.

    • id: string?

      Not null if already defined id in markdown strings.

      e.g. title-id for # title {#title-id}

      NOTICE: In order to parse attributes, need UseGenericAttributes extension after all of other extensions which you want parse.

TocOptions

Specials
  • IsUlOnlyContainLi: bool: default true

    According to webhint , ul and ol must only directly contain li, script or template elements.

    Set false to mix ul and li like others do (generate less code).

  • TitleAsConainerHeader: bool: default false

    Put the tile in ContainerTag not inside the TocTag

    NOTICE: working only ContainerTag is not null.

TOC Container
  • ContainerTag: string? : default null

    If this is not null, the toc will put in a element use ContainerTag.

  • ContainerId: string? : default null

    Id attribute for ContainerTag.

  • ContainerClass: string? : default null

    Class attribute for ContainerTag. e.g. "class1 class2"

TOC Element
  • TocTag: string : default nav

    Tag name for toc element.

  • TocId: string? : default null

    Id attribute for TocTag.

  • TocClass: string? : default null

    Class attribute for TocTag. e.g. "class1 class2"

TOC Title

NOTICE: I also parse toc title and use it's attributes from markdown document , but that is not a regular syntax, you should know that.

  • OverrideTitle: string? : default null

    Override toc title , ignore defined in markdown document.

  • TitleTag: string : default p

    Tag name for toc title element.

  • TitleId: string? : default null

    Id attribute for TitleTag.

  • TitleClass: string? : default null

    Class attribute for TitleTag. e.g. "class1 class2"

TOC Items
  • ulClass: string? : default p

    Class attribute for ul element.

  • liClass: string? : default null

    Class attribute for li element.

  • aClass: string? : default null

    Class attribute for a element.

Others

Markdown document:

[TOC]       

##### t5
#### t4
### t3
## t2
# t1
## t2
### t3
#### t4
##### t5

IsUlOnlyContainLi=true :

●
    ○
        ■
            ■
                ■ t5
            ■ t4
        ■ t3
    ○ t2
● t1
    ○ t2
        ■ t3
            ■ t4
                ■ t5

IsUlOnlyContainLi=false :

                ■ t5
            ■ t4
        ■ t3
    ○ t2
● t1
    ○ t2
        ■ t3
            ■ t4
                ■ t5
  • .NETCoreApp 2.1

  • .NETCoreApp 3.1

  • .NETFramework 4.5.2

  • .NETStandard 2.0

  • .NETStandard 2.1

  • net5.0

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.1.3 62 9/15/2021

v0.1.3:
     1. Fix parse two markdown document use same `MarkdownPipelineBuilder` , one document without `[toc]` and the other one has, the generated toc block will contains both.
     2. After fixed, markdown document can has more than one `[toc]` , and all of these can be rendered, though it's useless.