hackmd-to-html-cli
Version:
A node.js CLI tool for converting HackMD markdown to HTML.
99 lines • 3.96 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Converter = void 0;
const yamlMetadata_1 = require("./markdown/yamlMetadata");
const container_1 = require("./markdown/container");
const checkbox_1 = require("./markdown/checkbox");
const external_1 = require("./markdown/external");
const blockquotex_1 = require("./markdown/blockquotex");
const fencex_1 = require("./markdown/fencex");
const markdown_it_1 = __importDefault(require("markdown-it"));
const markdown_it_sub_1 = __importDefault(require("markdown-it-sub"));
const markdown_it_sup_1 = __importDefault(require("markdown-it-sup"));
const markdown_it_footnote_1 = __importDefault(require("markdown-it-footnote"));
const markdown_it_deflist_1 = __importDefault(require("markdown-it-deflist"));
const markdown_it_abbr_1 = __importDefault(require("markdown-it-abbr"));
const markdown_it_emoji_1 = __importDefault(require("markdown-it-emoji"));
const markdown_it_ins_1 = __importDefault(require("markdown-it-ins"));
const markdown_it_mark_1 = __importDefault(require("markdown-it-mark"));
const markdown_it_imsize_1 = __importDefault(require("markdown-it-imsize"));
const markdown_it_mathjax3_1 = __importDefault(require("markdown-it-mathjax3"));
const markdown_it_table_of_contents_1 = __importDefault(require("markdown-it-table-of-contents"));
const markdown_it_anchor_1 = __importDefault(require("markdown-it-anchor"));
const markdown_it_ruby_1 = __importDefault(require("markdown-it-ruby"));
class Converter {
constructor(options = {
html: true,
breaks: true,
linkify: true,
typographer: true
}) {
// https://hackmd.io/c/codimd-documentation/%2F%40codimd%2Fmarkdown-syntax
this.md = new markdown_it_1.default(options)
.use(markdown_it_mathjax3_1.default)
.use(markdown_it_sub_1.default)
.use(markdown_it_sup_1.default)
.use(markdown_it_footnote_1.default)
.use(markdown_it_deflist_1.default)
.use(markdown_it_abbr_1.default)
.use(markdown_it_mark_1.default)
.use(markdown_it_emoji_1.default.full)
.use(markdown_it_ins_1.default)
.use(markdown_it_imsize_1.default)
.use(markdown_it_table_of_contents_1.default, {
markerPattern: /^\[toc\]/im,
includeLevel: [1, 2, 3, 4]
})
.use(yamlMetadata_1.MarkdownItYAMLMetadata, (metadata) => {
this.metadata = metadata;
})
.use(markdown_it_anchor_1.default)
.use(markdown_it_ruby_1.default)
.use(container_1.MarkdownItContainer)
.use(checkbox_1.MarkdownItCheckbox)
.use(external_1.MarkdownItExternal)
.use(blockquotex_1.MarkdownItBlockquoteX)
.use(fencex_1.MarkdownItFenceX);
}
/**
* @param markdown markdown text
*
* @returns ConvertedResult contains `main` and `metadata`
*
* ```
* ConvertedResult {
* main: string; // generated html text
* metadata: Metadata; // parsed metadata
* }
*
* Metadata {
* title: string;
* description: string;
* lang: string;
* robots: string;
* dir: string;
* image: string;
* }
* ```
*/
render(markdown) {
var _a;
const main = this.md.render(markdown);
return {
main: main,
metadata: (_a = this.metadata) !== null && _a !== void 0 ? _a : {
title: '',
description: '',
lang: '',
robots: '',
dir: '',
image: ''
}
};
}
}
exports.Converter = Converter;
//# sourceMappingURL=converter.js.map