linkify: function(tok, heading) { var url = relative(fp); url += '/#'; url += toc.slugify(heading); tok.content = mdu.link(tok.content, url); return tok; }
var tables = files.map(function (file) { if (file.match('index.md')) return if (file.match('README.md')) return if (file.match('node_modules')) return var filenameSlug = toc.slugify(path.parse(file).name) var originalLinkify = toc.linkify var table = toc(fs.readFileSync(file, 'utf8'), { filter: function(str, ele, arr) { // Skip top-level elements if their slug matches a slug of the filename. return ele.level != 1 || ele.slug != filenameSlug }, linkify: function(tok, text, slug, opts) { // Use empty options arg to avoid infinite recursion. var tok = originalLinkify(tok, text, slug, {}) // Prepend filename to links. tok.content = tok.content.replace('#', file + '#') return tok } }) // Add filename as a heading. return '### [' + filenameSlug + '](' + file + ')\n\n' + table.content })
remarkable.renderer.rules.heading_open = function (tokens, idx) { return '<h' + tokens[idx].hLevel + ' id=' + toc.slugify(tokens[idx + 1].content) + '>'; };