From 4a90ad4a01d63514d9669ce3916bb0ca583561f2 Mon Sep 17 00:00:00 2001 From: Sujal Gupta Date: Fri, 28 Jul 2023 13:15:35 +0530 Subject: [PATCH 1/9] add toLowerCase() Signed-off-by: Sujal Gupta --- packages/docusaurus-theme-classic/src/index.ts | 2 +- .../src/theme/prism-include-languages.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/index.ts b/packages/docusaurus-theme-classic/src/index.ts index 48a80606ac10..2349994ab84c 100644 --- a/packages/docusaurus-theme-classic/src/index.ts +++ b/packages/docusaurus-theme-classic/src/index.ts @@ -176,7 +176,7 @@ export default function themeClassic( configureWebpack() { const prismLanguages = additionalLanguages - .map((lang) => `prism-${lang}`) + .map((lang) => `prism-${lang.toLowerCase()}`) .join('|'); return { diff --git a/packages/docusaurus-theme-classic/src/theme/prism-include-languages.ts b/packages/docusaurus-theme-classic/src/theme/prism-include-languages.ts index 31dc8889ff50..629e1130d5ba 100644 --- a/packages/docusaurus-theme-classic/src/theme/prism-include-languages.ts +++ b/packages/docusaurus-theme-classic/src/theme/prism-include-languages.ts @@ -27,7 +27,7 @@ export default function prismIncludeLanguages( additionalLanguages.forEach((lang) => { // eslint-disable-next-line global-require, import/no-dynamic-require - require(`prismjs/components/prism-${lang}`); + require(`prismjs/components/prism-${lang.toLowerCase()}`); }); delete (globalThis as Optional).Prism; From 39088f8ea47fa19598255397f75eee0e224163db Mon Sep 17 00:00:00 2001 From: Sujal Gupta Date: Fri, 28 Jul 2023 13:20:18 +0530 Subject: [PATCH 2/9] add test code block for good/bad prism language case Signed-off-by: Sujal Gupta --- .../_dogfooding/_pages tests/code-block-tests.mdx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/website/_dogfooding/_pages tests/code-block-tests.mdx b/website/_dogfooding/_pages tests/code-block-tests.mdx index 22c9697465fa..21c7f2bfc3c0 100644 --- a/website/_dogfooding/_pages tests/code-block-tests.mdx +++ b/website/_dogfooding/_pages tests/code-block-tests.mdx @@ -27,6 +27,21 @@ See: - https://github.com/facebook/docusaurus/pull/3749 - https://github.com/facebook/docusaurus/pull/6177 +## Code block with/without the good prism language case in additionalLanguages[] tests + +```php + +``` + +See: + +- + ## `pre` ### `pre > string` From 194f14fca455c87169522f2f1655645b11e3b43b Mon Sep 17 00:00:00 2001 From: Sujal Gupta Date: Fri, 28 Jul 2023 14:19:58 +0530 Subject: [PATCH 3/9] add PR link --- website/_dogfooding/_pages tests/code-block-tests.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/_dogfooding/_pages tests/code-block-tests.mdx b/website/_dogfooding/_pages tests/code-block-tests.mdx index 21c7f2bfc3c0..dc3cbc5e8b6c 100644 --- a/website/_dogfooding/_pages tests/code-block-tests.mdx +++ b/website/_dogfooding/_pages tests/code-block-tests.mdx @@ -40,7 +40,7 @@ echo "Sum: ",$z; See: -- +- https://github.com/facebook/docusaurus/pull/9183 ## `pre` From 66aa971bc3d200707d5fba6099e023691ee7068e Mon Sep 17 00:00:00 2001 From: Sujal Gupta Date: Fri, 28 Jul 2023 16:45:43 +0530 Subject: [PATCH 4/9] add pHp in additionalLanguages --- website/docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 3a1c7082e1de..4333df0b9c48 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -461,7 +461,7 @@ module.exports = async function createConfigAsync() { content: `⭐️ If you like Docusaurus, give it a star on GitHub and follow us on Twitter ${TwitterSvg}`, }, prism: { - additionalLanguages: ['java', 'latex'], + additionalLanguages: ['java', 'latex', 'pHp'], magicComments: [ { className: 'theme-code-block-highlighted-line', From d50265dd6bb5f405b54c6727bf94eda77ffff2ce Mon Sep 17 00:00:00 2001 From: Sujal Gupta Date: Fri, 28 Jul 2023 17:07:50 +0530 Subject: [PATCH 5/9] add more test code blocks --- .../_pages tests/code-block-tests.mdx | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/website/_dogfooding/_pages tests/code-block-tests.mdx b/website/_dogfooding/_pages tests/code-block-tests.mdx index dc3cbc5e8b6c..5c6aa96c8232 100644 --- a/website/_dogfooding/_pages tests/code-block-tests.mdx +++ b/website/_dogfooding/_pages tests/code-block-tests.mdx @@ -27,7 +27,9 @@ See: - https://github.com/facebook/docusaurus/pull/3749 - https://github.com/facebook/docusaurus/pull/6177 -## Code block with/without the good prism language case in additionalLanguages[] tests +## Code block prism language tests + +Code block with/without the good prism language case(lower or upper) in `additionalLanguages[]` ```php ``` +```PHP + +``` + +```pHp + +``` + See: - https://github.com/facebook/docusaurus/pull/9183 From f86aab444816a2bb06e2006d620ade9a8de0a25f Mon Sep 17 00:00:00 2001 From: sebastienlorber Date: Thu, 10 Aug 2023 16:35:53 +0200 Subject: [PATCH 6/9] Add php title to code blocks, easier to debug --- website/_dogfooding/_pages tests/code-block-tests.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/_dogfooding/_pages tests/code-block-tests.mdx b/website/_dogfooding/_pages tests/code-block-tests.mdx index 5c6aa96c8232..c4ea3a295033 100644 --- a/website/_dogfooding/_pages tests/code-block-tests.mdx +++ b/website/_dogfooding/_pages tests/code-block-tests.mdx @@ -31,7 +31,7 @@ See: Code block with/without the good prism language case(lower or upper) in `additionalLanguages[]` -```php +```php title="php" ``` -```PHP +```PHP title="PHP" ``` -```pHp +```pHp title="pHp" Date: Thu, 10 Aug 2023 16:40:33 +0200 Subject: [PATCH 7/9] Revert changes --- packages/docusaurus-theme-classic/src/index.ts | 2 +- .../src/theme/prism-include-languages.ts | 2 +- website/docusaurus.config.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/index.ts b/packages/docusaurus-theme-classic/src/index.ts index 2349994ab84c..48a80606ac10 100644 --- a/packages/docusaurus-theme-classic/src/index.ts +++ b/packages/docusaurus-theme-classic/src/index.ts @@ -176,7 +176,7 @@ export default function themeClassic( configureWebpack() { const prismLanguages = additionalLanguages - .map((lang) => `prism-${lang.toLowerCase()}`) + .map((lang) => `prism-${lang}`) .join('|'); return { diff --git a/packages/docusaurus-theme-classic/src/theme/prism-include-languages.ts b/packages/docusaurus-theme-classic/src/theme/prism-include-languages.ts index 629e1130d5ba..31dc8889ff50 100644 --- a/packages/docusaurus-theme-classic/src/theme/prism-include-languages.ts +++ b/packages/docusaurus-theme-classic/src/theme/prism-include-languages.ts @@ -27,7 +27,7 @@ export default function prismIncludeLanguages( additionalLanguages.forEach((lang) => { // eslint-disable-next-line global-require, import/no-dynamic-require - require(`prismjs/components/prism-${lang.toLowerCase()}`); + require(`prismjs/components/prism-${lang}`); }); delete (globalThis as Optional).Prism; diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 4333df0b9c48..59aa5dc2c465 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -461,7 +461,7 @@ module.exports = async function createConfigAsync() { content: `⭐️ If you like Docusaurus, give it a star on GitHub and follow us on Twitter ${TwitterSvg}`, }, prism: { - additionalLanguages: ['java', 'latex', 'pHp'], + additionalLanguages: ['java', 'latex', 'PHp'], magicComments: [ { className: 'theme-code-block-highlighted-line', From 3f07aabfd208317b3ee272c8fa9e5cfbeccec62f Mon Sep 17 00:00:00 2001 From: sebastienlorber Date: Thu, 10 Aug 2023 16:59:15 +0200 Subject: [PATCH 8/9] Normalize theme prism languages to lowercase --- .../src/__tests__/options.test.ts | 10 ++++++++-- packages/docusaurus-theme-classic/src/options.ts | 8 ++++++-- .../src/theme/CodeBlock/Content/String.tsx | 13 +++++++++++-- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/__tests__/options.test.ts b/packages/docusaurus-theme-classic/src/__tests__/options.test.ts index 07788d649326..fc85ec717476 100644 --- a/packages/docusaurus-theme-classic/src/__tests__/options.test.ts +++ b/packages/docusaurus-theme-classic/src/__tests__/options.test.ts @@ -38,8 +38,8 @@ describe('themeConfig', () => { prism: { theme, darkTheme, - defaultLanguage: 'javascript', - additionalLanguages: ['kotlin', 'java'], + defaultLanguage: 'javaSCRIPT', + additionalLanguages: ['koTLin', 'jaVa'], magicComments: [ { className: 'theme-code-block-highlighted-line', @@ -126,6 +126,12 @@ describe('themeConfig', () => { expect(testValidateThemeConfig(userConfig)).toEqual({ ...DEFAULT_CONFIG, ...userConfig, + prism: { + ...userConfig.prism, + // Modified/normalized values + defaultLanguage: 'javascript', + additionalLanguages: ['kotlin', 'java'], + }, }); }); diff --git a/packages/docusaurus-theme-classic/src/options.ts b/packages/docusaurus-theme-classic/src/options.ts index f59ca26a0c81..d8fc6f4717f0 100644 --- a/packages/docusaurus-theme-classic/src/options.ts +++ b/packages/docusaurus-theme-classic/src/options.ts @@ -313,6 +313,10 @@ const LogoSchema = Joi.object({ className: Joi.string(), }); +// Normalize prism language to lowercase +// See https://github.com/facebook/docusaurus/issues/9012 +const PrismLanguage = Joi.string().custom((val) => val.toLowerCase()); + export const ThemeConfigSchema = Joi.object({ // TODO temporary (@alpha-58) // @ts-expect-error: forbidden @@ -385,9 +389,9 @@ export const ThemeConfigSchema = Joi.object({ plain: Joi.alternatives().try(Joi.array(), Joi.object()).required(), styles: Joi.alternatives().try(Joi.array(), Joi.object()).required(), }), - defaultLanguage: Joi.string(), + defaultLanguage: PrismLanguage, additionalLanguages: Joi.array() - .items(Joi.string()) + .items(PrismLanguage) .default(DEFAULT_CONFIG.prism.additionalLanguages), magicComments: Joi.array() .items( diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/String.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/String.tsx index e1c72d0640ba..6a051802e2ef 100644 --- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/String.tsx +++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/Content/String.tsx @@ -24,6 +24,13 @@ import type {Props} from '@theme/CodeBlock/Content/String'; import styles from './styles.module.css'; +// Prism languages are always lowercase +// We want to fail-safe and allow both "php" and "PHP" +// See https://github.com/facebook/docusaurus/issues/9012 +function normalizeLanguage(language: string | undefined): string | undefined { + return language?.toLowerCase(); +} + export default function CodeBlockString({ children, className: blockClassName = '', @@ -35,8 +42,10 @@ export default function CodeBlockString({ const { prism: {defaultLanguage, magicComments}, } = useThemeConfig(); - const language = - languageProp ?? parseLanguage(blockClassName) ?? defaultLanguage; + const language = normalizeLanguage( + languageProp ?? parseLanguage(blockClassName) ?? defaultLanguage, + ); + const prismTheme = usePrismTheme(); const wordWrap = useCodeWordWrap(); From 5420c57adeac05915450832d8d162cdffc03af87 Mon Sep 17 00:00:00 2001 From: sebastienlorber Date: Thu, 10 Aug 2023 17:25:27 +0200 Subject: [PATCH 9/9] empty