Code integration

You can integrate mdbooksharp into any .NET application via NuGet package.

Documentation reference

mdbooksharp have multiple ways to generate book or book parts via code.

BookWizard

High-level fascade for book init and generation, use it if you do not need any settings up:

public static class BookWizard
{
    /// <summary>
    /// Generate or init book based on existance of summary.md file
    /// </summary>
    /// <param name="isLog"></param>
    public static void GenerateOrInit(bool isLog = true);

    /// <summary>
    /// Generate book with default extension list
    /// </summary>
    /// <param name="bookPath"></param>
    /// <param name="isLog"></param>
    public static void Generate(string bookPath, bool isLog = true);

    /// <summary>
    /// Generate book with specific extension list (lua automatically included)
    /// </summary>
    /// <param name="bookPath"></param>
    /// <param name="extensions"></param>
    /// <param name="isLog"></param>
    public static void Generate(string bookPath, List<MdBookExtension> extensions, bool isLog=true);

    /// <summary>
    /// Init new book template inside directory path
    /// </summary>
    /// <param name="bookPath"></param>
    /// <param name="isLog"></param>
    public static void Init(string bookPath, bool isLog = true);

    /// <summary>
    /// Check book exists by summary.md file
    /// </summary>
    /// <param name="bookPath"></param>
    /// <returns></returns>
    public static bool IsBookExists(string bookPath);
}

BookLoader

Used for loading settings.json, parse summary.md, initialize manifest for incremental builds and handle localization (built-in and in-book):

public class BookLoader
{
    /// <summary>
    /// Load book into object model
    /// </summary>
    /// <param name="path">path to directory with src folder</param>
    /// <param name="isDebug">if set true, throw exeptions</param>
    /// <param name="lua">lua extension for process summary.md</param>
    /// <param name="extensions">list of extensions for init</param>
    /// <returns>Book object</returns>
    public static Book Load(string path, bool isDebug, LuaExtension lua, List<MdBookExtension> extensions);
}

BookRenderer

Used for render markdown files and run extensions on it:

public class BookRenderer
{
    /// <summary>
    /// Generate html from md files and process all output pages
    /// </summary>
    /// <param name="book">book for processing pages</param>
    /// <param name="extensions">list of extensions used for processing</param>
    public static void Render(Book book, List<MdBookExtension> extensions);
}

BookBuilder

Used for build search, write pages, copying book files, process and copy static html files, images, and manifest for incremental builds:

public class BookBuilder
{
    /// <summary>
    /// Save book on disk
    /// </summary>
    /// <param name="book">book to save</param>
    /// <param name="extensions">extensions for process static files</param>
    public static void Build(Book book, List<MdBookExtension> extensions);
}

Usage

You can call Load, Render and Build operations separatly, but attempting to build without rendering will result in an empty html files.