UNPKG

infopack-gen-md-to-html

Version:

This infopack generator will take .md files as input and produce html

43 lines (38 loc) 1.58 kB
var Promise = require('bluebird'); var fs = require('fs'); var fg = require('fast-glob'); var marked = require('marked'); var renderer = { heading(text, level, raw, slugger) { var id = slugger.slug(raw) if (/^\d/.test(id)) { id = 'n-' + id } return '<h' + level + ' id="' + id + '">' + text + '</h' + level + '>\n' } } marked.marked.use({ renderer: renderer, extensions: [require('./marked-ext-aoatotable')] }) module.exports.step = function step(settings) { return { run: function(executor) { return fg('input/**/*.md') .then(paths => { return Promise.mapSeries(paths, filePath => { let newFilePath = filePath.replace('input/', '') var meta = JSON.parse(fs.readFileSync(executor.getInputPath(newFilePath + '.meta-input.json'))) var fileOutputPath = newFilePath.replace('.md', '.partial.html') var md = fs.readFileSync(filePath) executor.toOutput({ path: fileOutputPath, data: marked.marked.parse(md.toString(), { currentFilePath: filePath, executor: executor }), title: meta.title, description: meta.description, labels: meta.labels, origin: [newFilePath] }) }) }) }, settings: settings || {} } }