UNPKG

html-to-article-json

Version:
66 lines (51 loc) 1.45 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _es6Set = require('es6-set'); var _es6Set2 = _interopRequireDefault(_es6Set); var _blockElements = require('block-elements'); var _blockElements2 = _interopRequireDefault(_blockElements); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var BLOCK_ELEMENTS = new _es6Set2.default(_blockElements2.default); var TEXT_ELEMENTS = { h1: 'header1', h2: 'header2', h3: 'header3', h4: 'header4', h5: 'header5', h6: 'header6', p: 'paragraph', blockquote: 'blockquote' }; var isPullQuote = function isPullQuote(elm) { return elm.classList.contains('q'); }; var createBlockElement = function createBlockElement(type, elm) { if (type === 'blockquote') { return { type: type, pullQuote: isPullQuote(elm), children: [] }; } else { return { type: type, children: [] }; } }; // inject parse to avoid recursive requires exports.default = function (parse, text) { return function (elm, textOpts) { var tagName = elm.tagName.toLowerCase(); if (BLOCK_ELEMENTS.has(tagName)) { var type = TEXT_ELEMENTS[tagName] || 'block'; var blockElement = createBlockElement(type, elm); if (elm.childNodes.length) { parse(elm.childNodes, text(textOpts, elm), blockElement.children); } return blockElement; } }; };