old-website/scripts/mdx-scripts/event-conversion.js

68 lines
2.2 KiB
JavaScript

const fs = require("fs");
const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const { window } = new JSDOM('')
global.window = window
var showdown = require("showdown");
const converterShowdown = new showdown.Converter();
const useShowdown = (HTML) => {
return converterShowdown.makeMarkdown(HTML)
}
const Breakdance = require("breakdance");
const converterBreakdance = new Breakdance();
const useBreakdance = (HTML) => {
return converterBreakdance.render(HTML)
}
fs.readFile("./event-test.xml", "utf8", (err, data) => {
if (err) {
console.error(err);
return;
}
parseXML(data);
});
const parseXML = (XML) => {
const eventItemRegex = /<eventitem.*>(.|\n)*?<\/eventitem>/g;
const shortRegex = /(?<=<short>)(.|\n)*?(?=<\/short>)/g;
const abstractRegex = /(?<=<abstract>)(.|\n)*?(?=<\/abstract>)/g;
const dateRegex = /(?<=<eventitem(.*)date=")(.|\n)*?(?="(.*)>)/g;
const timeRegex = /(?<=<eventitem(.*)time=")(.|\n)*?(?="(.*)>)/g;
const roomRegex = /(?<=<eventitem(.*)room=")(.|\n)*?(?="(.*)>)/g;
const titleRegex = /(?<=<eventitem(.*)title=")(.|\n)*?(?="(.*)>)/g;
let eventItems = [];
while ((eventItems = eventItemRegex.exec(XML)) !== null) {
dateRegex.lastIndex = 0;
timeRegex.lastIndex = 0;
roomRegex.lastIndex = 0;
titleRegex.lastIndex = 0;
shortRegex.lastIndex = 0;
abstractRegex.lastIndex = 0;
const eventItem = eventItems[0];
const dateStr = dateRegex.exec(eventItem);
const timeStr = timeRegex.exec(eventItem);
const title = titleRegex.exec(eventItem)[0];
const short = shortRegex.exec(eventItem)[0];
// const short = shortRegex.exec(eventItem)[0]; if we want shorts in mdx
const room = roomRegex.exec(eventItem)[0];
const date = new Date(`${dateStr[0]} ${timeStr[0]}`);
const abstract = useShowdown(abstractRegex.exec(eventItem)[0]);
const mdx = `export const metadata = {\n name: ${title},\n short: ${short},\n date: ${date},\n online: TODO FIX THIS,\n location: ${room},\n registerLink: TODO FIX THIS,\n}\n\n${abstract}`;
const mdxTitle = title.replace(/(\s+|:+)/g, "-");
fs.writeFile(`${mdxTitle}.mdx`, mdx, function (err) {
if (err) return console.log(err);
});
}
};