Skip to content

Commit a33e7fb

Browse files
authored
fix(gatsby-remark-prismjs): Handle diff-language styling issue (#27659)
* Fix test to fail for PrismJS diff-highlight * Handle diff-language for PrismJS plugin * Restore checking the existence of PrismJS language early
1 parent e58f6be commit a33e7fb

File tree

3 files changed

+23
-6
lines changed

3 files changed

+23
-6
lines changed

packages/gatsby-remark-prismjs/src/__tests__/__snapshots__/highlight-code.js.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ exports[`highlight code and lines with PrismJS for language cpp 1`] = `
66
"
77
`;
88
9-
exports[`highlight code and lines with PrismJS for language diff-js 1`] = `
9+
exports[`highlight code and lines with PrismJS for language diff-typescript 1`] = `
1010
"
11-
<span class=\\"token deleted-sign deleted language-js\\"><span class=\\"token prefix deleted\\">-</span> <span class=\\"token keyword\\">let</span> foo <span class=\\"token operator\\">=</span> bar<span class=\\"token punctuation\\">.</span><span class=\\"token function\\">baz</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">[</span><span class=\\"token number\\">1</span><span class=\\"token punctuation\\">,</span> <span class=\\"token number\\">2</span><span class=\\"token punctuation\\">,</span> <span class=\\"token number\\">3</span><span class=\\"token punctuation\\">]</span><span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">;</span>
11+
<span class=\\"token deleted-sign deleted language-typescript\\"><span class=\\"token prefix deleted\\">-</span> <span class=\\"token keyword\\">let</span> foo <span class=\\"token operator\\">=</span> bar<span class=\\"token punctuation\\">.</span><span class=\\"token function\\">baz</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">[</span><span class=\\"token number\\">1</span><span class=\\"token punctuation\\">,</span> <span class=\\"token number\\">2</span><span class=\\"token punctuation\\">,</span> <span class=\\"token number\\">3</span><span class=\\"token punctuation\\">]</span><span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">;</span>
1212
<span class=\\"token prefix deleted\\">-</span> foo <span class=\\"token operator\\">=</span> foo <span class=\\"token operator\\">+</span> <span class=\\"token number\\">1</span><span class=\\"token punctuation\\">;</span>
13-
</span><span class=\\"token inserted-sign inserted language-js\\"><span class=\\"token prefix inserted\\">+</span> <span class=\\"token keyword\\">const</span> foo <span class=\\"token operator\\">=</span> bar<span class=\\"token punctuation\\">.</span><span class=\\"token function\\">baz</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">[</span><span class=\\"token number\\">1</span><span class=\\"token punctuation\\">,</span> <span class=\\"token number\\">2</span><span class=\\"token punctuation\\">,</span> <span class=\\"token number\\">3</span><span class=\\"token punctuation\\">]</span><span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">+</span> <span class=\\"token number\\">1</span><span class=\\"token punctuation\\">;</span>
14-
</span><span class=\\"token unchanged language-js\\"><span class=\\"token prefix unchanged\\"> </span> console<span class=\\"token punctuation\\">.</span><span class=\\"token function\\">log</span><span class=\\"token punctuation\\">(</span>foo<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">;</span>
13+
</span><span class=\\"token inserted-sign inserted language-typescript\\"><span class=\\"token prefix inserted\\">+</span> <span class=\\"token keyword\\">const</span> foo <span class=\\"token operator\\">=</span> bar<span class=\\"token punctuation\\">.</span><span class=\\"token function\\">baz</span><span class=\\"token punctuation\\">(</span><span class=\\"token punctuation\\">[</span><span class=\\"token number\\">1</span><span class=\\"token punctuation\\">,</span> <span class=\\"token number\\">2</span><span class=\\"token punctuation\\">,</span> <span class=\\"token number\\">3</span><span class=\\"token punctuation\\">]</span><span class=\\"token punctuation\\">)</span> <span class=\\"token operator\\">+</span> <span class=\\"token number\\">1</span><span class=\\"token punctuation\\">;</span>
14+
</span><span class=\\"token unchanged language-typescript\\"><span class=\\"token prefix unchanged\\"> </span> <span class=\\"token builtin\\">console</span><span class=\\"token punctuation\\">.</span><span class=\\"token function\\">log</span><span class=\\"token punctuation\\">(</span>foo<span class=\\"token punctuation\\">)</span><span class=\\"token punctuation\\">;</span>
1515
</span>"
1616
`;
1717

packages/gatsby-remark-prismjs/src/__tests__/highlight-code.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@ export default Counter
5555
expect(/<span[^>]*>[^<]*\n[^<]*<\/span>/g.exec(processed)).not.toBeTruthy()
5656
})
5757

58-
it(`for language diff-js`, () => {
58+
it(`for language diff-typescript`, () => {
5959
const highlightCode = require(`../highlight-code`)
6060
const language = `diff`
61-
const diffLanguage = `js`
61+
const diffLanguage = `typescript`
6262
const lineNumbersHighlight = []
6363
const code = `
6464
- let foo = bar.baz([1, 2, 3]);

packages/gatsby-remark-prismjs/src/highlight-code.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,23 @@ module.exports = (
4343
}
4444
}
4545

46+
// (Try to) load diffLanguage on demand.
47+
if (diffLanguage && !Prism.languages[diffLanguage]) {
48+
try {
49+
loadPrismLanguage(diffLanguage)
50+
} catch (e) {
51+
let message = `unable to find prism language '${diffLanguage}' for highlighting.`
52+
53+
const lang = diffLanguage.toLowerCase()
54+
if (!unsupportedLanguages.has(lang)) {
55+
console.warn(message, `applying generic code block`)
56+
unsupportedLanguages.add(lang)
57+
}
58+
// Ignore diffLanguage when it does not exist.
59+
diffLanguage = null
60+
}
61+
}
62+
4663
const grammar = Prism.languages[language]
4764
const highlighted = Prism.highlight(
4865
code,

0 commit comments

Comments
 (0)