gctGenerator/scripts/inject_codes.js

33 lines
1.1 KiB
JavaScript
Raw Normal View History

2020-07-01 14:26:48 +09:00
const fs = require('fs');
const path = require('path');
const jsdom = require('jsdom');
2020-07-01 13:55:31 +09:00
2020-07-01 14:26:48 +09:00
const jsonFilePath = path.join(__dirname, '../site/.vuepress/data/gameVersions.json');
2020-07-01 13:55:31 +09:00
const codeVersions = ['GMSE01', 'GMSJ01', 'GMSP01', 'GMSJ0A'];
2020-06-29 00:35:18 +09:00
const parseXml = xmlString => {
2020-07-01 14:26:48 +09:00
const codeCollection = new jsdom.JSDOM(xmlString).window.document.getElementsByTagName('code');
2020-06-28 06:33:20 +09:00
const codes = [...codeCollection];
2020-06-29 00:35:18 +09:00
return codes.map(code => ({
author: parseTextNode(code, 'author'),
title: parseTextNode(code, 'title'),
description: parseTextNode(code, 'description'),
version: parseTextNode(code, 'version'),
date: parseTextNode(code, 'date'),
source: parseTextNode(code, 'source').replace(/[\s\n\r\t]+/gm, ''),
2020-06-28 06:33:20 +09:00
}));
};
2020-06-29 00:35:18 +09:00
const parseTextNode = (node, identifier) => node.getElementsByTagName(identifier)[0].textContent;
2020-06-28 06:33:20 +09:00
2020-07-01 13:55:31 +09:00
const codes = JSON.parse(fs.readFileSync(jsonFilePath));
for (let i = 0; i < codeVersions.length; i++) {
2020-07-01 14:26:48 +09:00
const xml = fs.readFileSync(path.join(__dirname, `../codes/${codeVersions[i]}.xml`));
2020-07-01 13:55:31 +09:00
codes.find(c => c.identifier === codeVersions[i]).codes = parseXml(xml);
}
fs.writeFileSync(jsonFilePath, JSON.stringify(codes));