UNPKG

md2hatena

Version:

Markdown to Hatena Syntax converter

65 lines (49 loc) 1.6 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.nodeToHatena = undefined; exports.md2hatena = md2hatena; exports.stringify = stringify; var _unified = require('unified'); var _unified2 = _interopRequireDefault(_unified); var _remarkParse = require('remark-parse'); var _remarkParse2 = _interopRequireDefault(_remarkParse); var _nodeToHatena = require('./nodeToHatena'); var _nodeToHatena2 = _interopRequireDefault(_nodeToHatena); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function md2hatena(md) { return (0, _unified2.default)().use(_remarkParse2.default, { footnotes: true }).use(stringify).process(md).then(function (vfile) { return vfile.contents; }); } function findInTree(node, type) { var nodes = []; if (node.children) { nodes = node.children.reduce(function (acc, n) { return acc.concat(findInTree(n, type)); }, []); } if (node.type === type) { nodes.push(node); } return nodes; } function getDefinition(tree) { var definition = {}; var footnoteDefinition = {}; findInTree(tree, 'definition').forEach(function (n) { definition[n.identifier] = n.url; }); findInTree(tree, 'footnoteDefinition').forEach(function (n) { footnoteDefinition[n.identifier] = n; }); return { definition: definition, footnoteDefinition: footnoteDefinition }; } function compiler(tree) { return (0, _nodeToHatena2.default)(tree, getDefinition(tree)); } function stringify() { this.Compiler = compiler; } exports.nodeToHatena = _nodeToHatena2.default;