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