Leisn.MarkdigToc 0.1.3

dotnet add package Leisn.MarkdigToc --version 0.1.3                
NuGet\Install-Package Leisn.MarkdigToc -Version 0.1.3                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<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                
#r "nuget: Leisn.MarkdigToc, 0.1.3"                
#r directive can be used in F# Interactive and Polyglot Notebooks. 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                

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
Product Compatible and additional computed target framework versions.
.NET net5.0 is compatible.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 is compatible.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 is compatible. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net452 is compatible.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .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 (1)

Showing the top 1 popular GitHub repositories that depend on Leisn.MarkdigToc:

Repository Stars
Librelancer/Librelancer
A re-implementation of Freelancer
Version Downloads Last updated
0.1.3 28,624 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.