diff --git a/packages/app-cli/tests/enex_to_md/highlight.html b/packages/app-cli/tests/enex_to_md/highlight.html index 0230649d0b8..6e6589c3630 100644 --- a/packages/app-cli/tests/enex_to_md/highlight.html +++ b/packages/app-cli/tests/enex_to_md/highlight.html @@ -1 +1,3 @@ -I'll highlight some text. \ No newline at end of file +I'll highlight some text. +
+this text is yellow \ No newline at end of file diff --git a/packages/app-cli/tests/enex_to_md/highlight.md b/packages/app-cli/tests/enex_to_md/highlight.md index ef6876cfdd0..36f301ee70e 100644 --- a/packages/app-cli/tests/enex_to_md/highlight.md +++ b/packages/app-cli/tests/enex_to_md/highlight.md @@ -1 +1,2 @@ -==I'll highlight some text.== \ No newline at end of file +==I'll highlight some text.== +==this text is yellow== \ No newline at end of file diff --git a/packages/lib/import-enex-md-gen.ts b/packages/lib/import-enex-md-gen.ts index ef4066aad92..0dd84951eaf 100644 --- a/packages/lib/import-enex-md-gen.ts +++ b/packages/lib/import-enex-md-gen.ts @@ -426,14 +426,21 @@ function attributeToLowerCase(node: any) { return output; } -function cssValue(context: any, style: string, propName: string): string { +function cssValue(context: any, style: string, propName: string | string[]): string { if (!style) return null; + const propNames = Array.isArray(propName) ? propName : [propName]; + try { const o = cssParser.parse(`pre {${style}}`); if (!o.stylesheet.rules.length) return null; - const prop = o.stylesheet.rules[0].declarations.find((d: any) => d.property.toLowerCase() === propName); - return prop && prop.value ? prop.value.trim().toLowerCase() : null; + + for (const propName of propNames) { + const prop = o.stylesheet.rules[0].declarations.find((d: any) => d.property.toLowerCase() === propName); + if (prop && prop.value) return prop.value.trim().toLowerCase(); + } + + return null; } catch (error) { displaySaxWarning(context, error.message); return null; @@ -507,7 +514,13 @@ function isCodeBlock(context: any, nodeName: string, attributes: any) { // Yes, this property sometimes appears as -en-codeblock, sometimes as // --en-codeblock. Would be too easy to import ENEX data otherwise. // https://github.com/laurent22/joplin/issues/4965 - const enCodeBlock = cssValue(context, attributes.style, '-en-codeblock') || cssValue(context, attributes.style, '--en-codeblock'); + const enCodeBlock = cssValue(context, attributes.style, [ + '-en-codeblock', + '--en-codeblock', + '-evernote-codeblock', + '--evernote-codeblock', + ]); + if (enCodeBlock && enCodeBlock.toLowerCase() === 'true') return true; } return false; @@ -518,8 +531,19 @@ function isHighlight(context: any, _nodeName: string, attributes: any) { // Evernote uses various inconsistent CSS prefixes: so far I've found // "--en", "-en", "-evernote", so I'm guessing "--evernote" probably // exists too. - const enHighlight = cssValue(context, attributes.style, '-evernote-highlight') || cssValue(context, attributes.style, '--evernote-highlight'); - if (enHighlight && enHighlight.toLowerCase() === 'true') return true; + + const enHighlight = cssValue(context, attributes.style, [ + '-evernote-highlight', + '--evernote-highlight', + '-en-highlight', + '--en-highlight', + ]); + + // Value can be any colour or "true". I guess if it's set at all it + // should be highlighted but just in case handle case where it's + // "false". + + if (enHighlight && enHighlight.toLowerCase() !== 'false') return true; } return false; }