UNPKG

yarle-evernote-to-md

Version:

Yet Another Rope Ladder from Evernote

58 lines 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceCodeBlock = exports.codeBlockRule = exports.unescapeMarkdown = void 0; const filter_by_nodename_1 = require("./filter-by-nodename"); const get_attribute_proxy_1 = require("./get-attribute-proxy"); const LanguageFactory_1 = require("./../../outputLanguages/LanguageFactory"); const yarle_1 = require("./../../yarle"); const isCodeBlock = (node) => { const nodeProxy = (0, get_attribute_proxy_1.getAttributeProxy)(node); const codeBlockFlag = '-en-codeblock:true'; return nodeProxy.style && nodeProxy.style.value.indexOf(codeBlockFlag) >= 0; }; const getIntendNumber = (node) => { const nodeProxy = (0, get_attribute_proxy_1.getAttributeProxy)(node); const paddingAttr = 'padding-left:'; let intendNumber = 0; if (nodeProxy.style && nodeProxy.style.value.indexOf(paddingAttr) >= 0) { intendNumber = Math.floor(nodeProxy.style.value.split(paddingAttr)[1].split('px')[0] / 20); } return intendNumber; }; const unescapeMarkdown = (s) => s.replace(/\\(.)/g, '$1'); exports.unescapeMarkdown = unescapeMarkdown; exports.codeBlockRule = { filter: (0, filter_by_nodename_1.filterByNodeName)('DIV'), replacement: (content, node) => { return (0, exports.replaceCodeBlock)(content, node); }, }; const replaceCodeBlock = (content, node) => { const nodeProxy = (0, get_attribute_proxy_1.getAttributeProxy)(node); const intend = getIntendNumber(node); content = `${'\t'.repeat(intend)}${content}`; if (isCodeBlock(node)) { // turndown has already escaped markdown chars (and all '\') in content; // reverse that to avoid extraneous backslashes in code block. content = (0, exports.unescapeMarkdown)(content); const langaugeFactory = new LanguageFactory_1.LanguageFactory(); const targetLanguage = langaugeFactory.createLanguage(yarle_1.yarleOptions.outputFormat); return `${targetLanguage.codeBlock}${content}${targetLanguage.codeBlock}`; } if (node.parentElement && isCodeBlock(node.parentElement) && node.parentElement.firstElementChild === node) { return `${content}`; } if (node.parentElement && isCodeBlock(node.parentElement)) { return `\n${content}`; } const childHtml = node.innerHTML; /*return node.isBlock ? childHtml !== '<br>' ? `\n${content}\n` : `${content}` : `${content}`; */ return node.isBlock ? `\n${content}\n` : content; }; exports.replaceCodeBlock = replaceCodeBlock; //# sourceMappingURL=replace-code-block.js.map