Would you like to clone this notebook?

When you clone a notebook you are able to make changes without affecting the original notebook.

Cancel

Remark/Commonmark Dingus

node v6.17.1
version: master
endpointsharetweet
const unified = require('unified'); const markdownToRemark = require('remark-parse'); const remarkToMarkdown = require('remark-stringify'); const remarkToHtml = require('remark-html'); const commonmark = require('commonmark'); const commonmarkParser = new commonmark.Parser(); const commonmarkRenderer = new commonmark.HtmlRenderer(); const remarkParse = md => unified() .use(markdownToRemark, { commonmark: true }) .parse(md) .children[0] .children; const remarkProcess = md => unified() .use(markdownToRemark, { commonmark: true }) .use(remarkToMarkdown, { commonmark: true }) .processSync(md) .contents; const remarkRender = md => unified() .use(markdownToRemark, { commonmark: true }) .use(remarkToHtml) .processSync(md) .contents; const commonmarkParse = md => { const parsed = commonmarkParser.parse(md); const walker = parsed.walker(); const acc = []; let event, node, indent = ''; while (event = walker.next()) { acc.push(`TYPE: ${event.node.type}\n`); if (event.node.literal === null) { indent += ' '; acc.push(indent); } else { acc.push(`${indent}VALUE: ${event.node.literal}\n`); indent = indent.slice(0, indent.length - 3); } } console.log(acc.join('')); }; const commonmarkRender = md => commonmarkRenderer.render(commonmarkParser.parse(md)); const parse = md => { console.log('Remark:'); console.log(remarkParse(md)); console.log('Commonmark:'); console.log(commonmarkParse(md)); }; const render = md => { console.log('Remark:'); console.log(remarkRender(md)); console.log('Commonmark:'); console.log(commonmarkRender(md)); }; render(` _a_b a_b_ a__b__c `);
Loading…

no comments

    sign in to comment