UNPKG

md2hatena

Version:

Markdown to Hatena Syntax converter

180 lines (167 loc) 5.67 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.default = nodeToHatena; var _joinNodes = require('./joinNodes'); var _joinNodes2 = _interopRequireDefault(_joinNodes); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var converter = { root: function root(node, opts) { return (0, _joinNodes2.default)(node.children, node.children.map(function (n) { return nodeToHatena(n, opts); })); }, heading: function heading(node, opts) { return '**********'.slice(0, node.depth) + ' ' + node.children.map(function (n) { return nodeToHatena(n, opts); }).join(''); }, text: function text(node) { return node.value; }, paragraph: function paragraph(node, opts) { return (0, _joinNodes2.default)(node.children, node.children.map(function (n) { return nodeToHatena(n, opts); })); }, inlineCode: function inlineCode(node) { return '<code>' + node.value + '</code>'; }, html: function html(node) { return node.value; }, thematicBreak: function thematicBreak() { return '<hr>'; }, link: function link(node, opts) { var title = node.children.map(function (n) { return nodeToHatena(n, opts); }).join(''); var suffix = title.match(/\S+/) ? ':title=' + title : ':title'; return '[' + node.url + suffix + ']'; }, list: function list(node, opts) { var level = opts.level || 0; return node.children.map(function (n) { return nodeToHatena(n, _extends({}, opts, { level: level + 1 })); }).join('\n'); }, listItem: function listItem(node, opts) { var level = opts.level || 0; return '----------'.slice(0, level) + ' ' + node.children.map(function (n) { var h = nodeToHatena(n, _extends({}, opts, { level: level })); return n.type === 'list' ? '\n' + h : h; }).join(''); }, table: function table(node, opts) { return nodeToHatena(node.children[0], { prefix: '*' }) + '\n' + node.children.slice(1).map(function (n) { return nodeToHatena(n, opts); }).join('\n'); }, tableRow: function tableRow(node, opts) { return '| ' + node.children.map(function (n) { return (opts.prefix || '') + nodeToHatena(n, opts); }).join(' | ') + ' |'; }, tableCell: function tableCell(node, opts) { return node.children.map(function (n) { return nodeToHatena(n, opts); }).join(''); }, code: function code(node) { return '>|' + (node.lang || '') + '|\n' + node.value + '\n||<'; }, blockquote: function blockquote(node, opts) { return '>>\n' + (0, _joinNodes2.default)(node.children, node.children.map(function (n) { return nodeToHatena(n, opts); })) + '\n<<'; }, yaml: function yaml(node) { return '>|yaml|\n---\n' + node.value + '\n---\n||<'; }, break: function _break() { return '\n'; }, emphasis: function emphasis(node, opts) { return '<em>' + node.children.map(function (n) { return nodeToHatena(n, opts); }).join('') + '</em>'; }, strong: function strong(node, opts) { return '<strong>' + node.children.map(function (n) { return nodeToHatena(n, opts); }).join('') + '</strong>'; }, delete: function _delete(node, opts) { return '<del>' + node.children.map(function (n) { return nodeToHatena(n, opts); }).join('') + '</del>'; }, image: function image(node) { if (node.alt && node.title) { return '<img src="' + node.url + '" alt="' + node.alt + '" title="' + node.title + '"/>'; } if (node.alt) { return '<img src="' + node.url + '" alt="' + node.alt + '"/>'; } if (node.title) { return '<img src="' + node.url + '" title="' + node.title + '"/>'; } return '[' + node.url + ':image]'; }, footnote: function footnote(node, opts) { return '((' + node.children.map(function (n) { return nodeToHatena(n, opts); }).join('') + '))'; }, footnoteDefinition: function footnoteDefinition() { return ''; }, footnoteReference: function footnoteReference(node, opts) { if (!opts.footnoteDefinition) { return ''; } var def = opts.footnoteDefinition[node.identifier]; if (def) { var body = def.children.map(function (n) { return nodeToHatena(n, opts); }).join(''); return '((' + body + '))'; } return ''; }, definition: function definition() { return ''; }, linkReference: function linkReference(node, opts) { if (!opts.definition || !opts.definition[node.identifier]) { return ''; } var def = opts.definition[node.identifier]; if (node.referenceType === 'full') { return '[' + def + ':title=' + node.children.map(function (n) { return nodeToHatena(n, opts); }).join('') + ']'; } return '[' + def + ']'; }, imageReference: function imageReference(node, opts) { if (!opts.definition || !opts.definition[node.identifier]) { return ''; } var def = opts.definition[node.identifier]; if (node.referenceType === 'full') { return '<img src="' + def + '" alt="' + node.alt + '"/>'; } return '[' + def + ':image]'; } }; function nodeToHatena(node) { var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (converter[node.type]) { return converter[node.type](node, opts); } return node.value || ''; }