UNPKG

yarle-evernote-to-md

Version:

Yet Another Rope Ladder from Evernote

81 lines 3.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceMonospaceCodeBlock = void 0; const get_attribute_proxy_1 = require("./get-attribute-proxy"); const replace_code_block_1 = require("./replace-code-block"); const markdownBlock = '\n```\n'; const codeBlockFlag = '-en-codeblock:true'; const reMonospaceFont = /\b(Courier|Mono|Consolas|Console|Inconsolata|Pitch|Monaco|monospace)\b/; const deepestFont = node => { var _a, _b; if (node.nodeType !== 1) { return null; } const children = node.childNodes; const numChildren = children.length; if (numChildren > 1) { return 'mixed'; } if (numChildren === 1) { const font = deepestFont(children[0]); if (font) { return font; } } const nodeProxy = (0, get_attribute_proxy_1.getAttributeProxy)(node); if (node.tagName === 'FONT') { return (_a = nodeProxy.face) === null || _a === void 0 ? void 0 : _a.value; } const style = (_b = nodeProxy.style) === null || _b === void 0 ? void 0 : _b.value; if (style) { const match = style.match(/font-family:([^;]+)/); if (match) { return match[1]; } } return null; }; const isMonospaceCodeBlock = node => { var _a; const nodeProxy = (0, get_attribute_proxy_1.getAttributeProxy)(node); const style = (_a = nodeProxy.style) === null || _a === void 0 ? void 0 : _a.value; if (style && style.includes(codeBlockFlag)) { return true; } const font = deepestFont(node); return font && reMonospaceFont.test(font); }; /* export const monospaceCodeBlockRule = { filter: filterByNodeName('DIV'), replacement: (content: string, node: any) => { if (yarleOptions.monospaceIsCodeBlock && isMonospaceCodeBlock(node)) { return replaceMonospaceCodeBlock(content, node); } }, }; */ const replaceMonospaceCodeBlock = (content, node) => { if (isMonospaceCodeBlock(node)) { const previous = node.previousSibling; const previousIsBlock = previous && previous.tagName === node.tagName && isMonospaceCodeBlock(previous); const next = node.nextSibling; const nextIsBlock = next && next.tagName === node.tagName && isMonospaceCodeBlock(next); if (previousIsBlock || nextIsBlock) { content = previousIsBlock ? `\n${content}` : `${markdownBlock}${content}`; content = nextIsBlock ? `${content}\n` : `${content}${markdownBlock}`; return content; } content = (0, replace_code_block_1.unescapeMarkdown)(content); return content.trim() ? `${markdownBlock}${content}${markdownBlock}` : content; } if (node.parentElement && isMonospaceCodeBlock(node.parentElement) && node.parentElement.firstElementChild === node) { return content; } if (node.parentElement && isMonospaceCodeBlock(node.parentElement)) { return `\n${content}`; } return node.isBlock ? `\n${content}\n` : content; }; exports.replaceMonospaceCodeBlock = replaceMonospaceCodeBlock; //# sourceMappingURL=replace-monospace-code-block.js.map