Hooks
Hooks is a method of augmenting or altering the behavior of the process, with custom callbacks.
List of hooks
Relative to the global pipeline
| Name | Description | Arguments | 
|---|---|---|
init | 
Called after parsing the book, before generating output and pages. | None | 
finish:before | 
Called after generating the pages, before copying assets, cover, ... | None | 
finish | 
Called after everything else. | None | 
Relative to the page pipeline
It is recommended using templating to extend page parsing.
| Name | Description | Arguments | 
|---|---|---|
page:before | 
Called before running the templating engine on the page | Page Object | 
page | 
Called before outputting and indexing the page. | Page Object | 
Page Object
{
    // Parser named
    "type": "markdown",
    // File Path relative to book root
    "path": "page.md",
    // Absolute file path
    "rawpath": "/usr/...",
    // Title of the page in the SUMMARY
    "title": "",
    // Content of the page
    // Markdown/Asciidoc in "page:before"
    // HTML in "page"
    "content": "# Hello"
}
Example to add a title
In the page:before hook, page.content is the markdown/asciidoc content.
{
    "page:before": function(page) {
        page.content = "# Title\n" +page.content;
        return page;
    }
}
Example to replace some html
In the page hook, page.content is the HTML generated from the markdown/asciidoc conversion.
{
    "page": function(page) {
        page.content = page.content.replace("<b>", "<strong>")
            .replace("</b>", "</strong>");
        return page;
    }
}
Asynchronous Operations
Hooks callbacks can be asynchronous and return promises.
Example:
{
    "init": function() {
        return writeSomeFile()
        .then(function() {
            return writeAnotherFile();
        });
    }
}