diff --git a/src/parseMarkdown.ts b/src/parseMarkdown.ts index 52f399ddd..159f63218 100644 --- a/src/parseMarkdown.ts +++ b/src/parseMarkdown.ts @@ -4,6 +4,8 @@ import type { Translator } from './translator.ts'; let census_groups: Record = {}; let census_comparisons: Record = {}; +const replaceQuoteEntity = (string: string): string => string.replace(/"/g, '"'); + const mainPlusDetails = (dict: Record, wide: boolean) => (_: string, keys: string, content: string) => { let selectedDict: Record = {}; if (keys === undefined) { @@ -63,7 +65,7 @@ const generateToC = (content: string, translator: Translator) => (_: string) => }; const generateGallery = (_: string, itemsString: string) => { - const items: Record = JSON.parse(`{${itemsString.replace(/"/g, '"').replace(/,\s*$/, '')}}`); + const items: Record = JSON.parse(`{${replaceQuoteEntity(itemsString).replace(/,\s*$/, '')}}`); const label = (alt: string): string => { if (!alt.startsWith('! ')) { @@ -106,11 +108,11 @@ export default async function parseMarkdown(markdown: string, translator: Transl .replace(/{graph=([^}]+)}/g, '') .replace(/

{set_census_groups=(.+?)}<\/p>/gms, (_, value) => { - census_groups = JSON.parse(value.replace(/"/g, '"')); + census_groups = JSON.parse(replaceQuoteEntity(value)); return ''; }) .replace(/

{set_census_comparisons=(.+?)}<\/p>/gms, (_, value) => { - census_comparisons = JSON.parse(value.replace(/"/g, '"')); + census_comparisons = JSON.parse(replaceQuoteEntity(value)); return ''; }) .replace(/

{census_groups(:.+?)?}<\/p>(.+?)

{\/census_groups}<\/p>/gms, mainPlusDetails(census_groups, false)) @@ -140,7 +142,7 @@ export default async function parseMarkdown(markdown: string, translator: Transl }); const titleMatch = content.match(']*>(.+?)'); - const title = titleMatch ? titleMatch[1] : null; + const title = titleMatch ? replaceQuoteEntity(titleMatch[1]) : null; const imgMatch = content.match(']*>'); const img = imgMatch ? imgMatch[1] : null; let intro: string[] = [];