From 26df7ae8845ed3c2fe47456a7eff76ecb6d89e5e Mon Sep 17 00:00:00 2001 From: LMBishop <13875753+LMBishop@users.noreply.github.com> Date: Tue, 21 Dec 2021 22:40:00 +0000 Subject: Fix transclusion for templates --- app/wikiparser.mjs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'app/wikiparser.mjs') diff --git a/app/wikiparser.mjs b/app/wikiparser.mjs index a74b216..519100b 100644 --- a/app/wikiparser.mjs +++ b/app/wikiparser.mjs @@ -29,7 +29,7 @@ const re = (regex, flag = 'mgi') => { const r = String.raw; const arg = r`\s*([^|}]+?)\s*`; -export function parse(data) { +export function parse(directory, data) { const vars = {}; const metadata = {}; let nowikis = []; @@ -117,19 +117,16 @@ export function parse(data) { // Templates: {{template}} .replace(re(r`{{ \s* ([^#}|]+?) (\|[^}]+)? }} (?!})`), (_, title, params = '') => { if (/{{/.test(params)) return _; - const page = 'Template:' + title.trim().replace(/ /g, '_'); + const page = title.includes(':') ? title : `Template:${title}` // Retrieve template content - let content = ''; - try { - content = fs.readFileSync(page + '.wiki', 'utf8' ); - } - catch { - return `${title}`; + let content = directory.get(page); + if (!content) { + return `Template:${title}`; } // Remove non-template sections - content = content + content = content.raw .replace(/.*?<\/noinclude>/gs, '') .replace(/.*<(includeonly|onlyinclude)>|<\/(includeonly|onlyinclude)>.*/gs, ''); -- cgit v1.2.3-70-g09d2