From 8d6da95e272ae243841e152f424edf221d354248 Mon Sep 17 00:00:00 2001 From: Jared He Date: Sat, 19 Jun 2021 20:56:29 -0400 Subject: [PATCH] Misc. fixes --- scripts/mdx-scripts/event-conversion.js | 48 +++++++++---------------- scripts/mdx-scripts/events-test.xml | 1 + scripts/mdx-scripts/events.xml | 2 +- scripts/mdx-scripts/getTerm.js | 22 ++++++++++++ scripts/mdx-scripts/news-conversion.js | 39 +++++--------------- 5 files changed, 50 insertions(+), 62 deletions(-) create mode 100644 scripts/mdx-scripts/getTerm.js diff --git a/scripts/mdx-scripts/event-conversion.js b/scripts/mdx-scripts/event-conversion.js index 939b07c..7f8f8c5 100644 --- a/scripts/mdx-scripts/event-conversion.js +++ b/scripts/mdx-scripts/event-conversion.js @@ -6,12 +6,14 @@ global.window = window; var showdown = require("showdown"); const converterShowdown = new showdown.Converter(); const libxmljs = require("libxmljs"); +const getTerm = require("./getTerm.js"); -fs.readFile("./events.xml", "utf8", (err, data) => { +fs.readFile("../../events.xml", "utf8", (err, data) => { if (err) { console.error(err); return; } + data = data.replace(//, ""); parseXML(data); }); @@ -41,6 +43,8 @@ const parseTime = (dateStr, timeStr) => { return date; }; + + const nodeChildrenToString = (nodeChildren) => { let string = ""; for (let i = 0; i < nodeChildren.length; ++i) { @@ -56,54 +60,36 @@ const nodeChildrenToString = (nodeChildren) => { const parseXML = (XML) => { const xmlDoc = libxmljs.parseHtml(XML); let eventdefsChildren = xmlDoc.get("//eventdefs").childNodes(); - let currentTerm = ""; - for (let i = 0; i < eventdefsChildren.length; ++i) { + eventdefsChildren.forEach((eventItem) => { // sometimes there's events that are commented out, hopefully this catches that - if ( - eventdefsChildren[i].type() === "comment" && - /((winter)|(fall)|(spring))/.exec( - eventdefsChildren[i].toString().toLowerCase() - ) - ) { - currentTerm = eventdefsChildren[i].text().replace(/[\\\\/:*?\"<>|]/g, ""); - currentTerm = currentTerm.replace(/(\s+)/g, "-"); - } else if (eventdefsChildren[i].type() === "element") { - const title = eventdefsChildren[i].attr("title").value(); - const shortNodes = eventdefsChildren[i].get(".//short").childNodes(); + if (eventItem.type() === "element") { + const title = eventItem.attr("title").value(); + const shortNodes = eventItem.get(".//short").childNodes(); let short = converterShowdown.makeMarkdown( nodeChildrenToString(shortNodes) ); // remove newlines from short short = short.replace(/\n/g, ""); - const dateStr = eventdefsChildren[i].attr("date").value(); - const timeStr = eventdefsChildren[i].attr("time").value(); + const dateStr = eventItem.attr("date").value(); + const timeStr = eventItem.attr("time").value(); const date = parseTime(dateStr, timeStr); - const location = eventdefsChildren[i].attr("room").value(); + currentTerm = getTerm(date); + const location = eventItem.attr("room").value(); const online = location.toLowerCase() === "online" ? true : false; let abstract = short; - if (eventdefsChildren[i].get(".//abstract") !== undefined) { - const abstractNodes = eventdefsChildren[i] - .get(".//abstract") - .childNodes(); + if (eventItem.get(".//abstract") !== undefined) { + const abstractNodes = eventItem.get(".//abstract").childNodes(); abstract = converterShowdown.makeMarkdown( nodeChildrenToString(abstractNodes) ); abstract = abstract.replace(/
/g, "\n"); } - let registerLink = ""; - // detects a link in markdown such as [CSC Club Website]() - const markdownLinkDetectRegex = /(?<=\[(.*)\]\(<)(.*)(?=>\))/; - if (markdownLinkDetectRegex.exec(abstract)) { - registerLink = `\n registerLink: "${ - markdownLinkDetectRegex.exec(abstract)[0] - }",`; - } const mdx = `export const metadata = { name: "${title}", short: "${short}", date: new Date("${date.toString()}"), online: ${online}, - location: "${location}",${registerLink} + location: "${location}", } ${abstract}`; @@ -127,5 +113,5 @@ ${abstract}`; } ); } - } + }); }; diff --git a/scripts/mdx-scripts/events-test.xml b/scripts/mdx-scripts/events-test.xml index 735a7e6..eb3b680 100644 --- a/scripts/mdx-scripts/events-test.xml +++ b/scripts/mdx-scripts/events-test.xml @@ -1,5 +1,6 @@ +]> diff --git a/scripts/mdx-scripts/events.xml b/scripts/mdx-scripts/events.xml index d00fdfd..1ddb9fd 100644 --- a/scripts/mdx-scripts/events.xml +++ b/scripts/mdx-scripts/events.xml @@ -7181,7 +7181,7 @@ to get a hands on feeling for the language. Don't worry if you haven't seen the - + Bjarne Stroustrup diff --git a/scripts/mdx-scripts/getTerm.js b/scripts/mdx-scripts/getTerm.js new file mode 100644 index 0000000..51f4fc1 --- /dev/null +++ b/scripts/mdx-scripts/getTerm.js @@ -0,0 +1,22 @@ +module.exports = getTerm = (dateStr) => { + const date = new Date(dateStr); + let term = ""; + const year = date.getUTCFullYear(); + if ( + new Date(`${year}-01-01`).getTime() <= date.getTime() && + date.getTime() <= new Date(`${year}-04-30`).getTime() + ) { + term = "Winter"; + } else if ( + new Date(`${year}-05-01`).getTime() <= date.getTime() && + date.getTime() <= new Date(`${year}-08-31`).getTime() + ) { + term = "Spring"; + } else if ( + new Date(`${year}-09-01`).getTime() <= date.getTime() && + date.getTime() <= new Date(`${year}-12-31`).getTime() + ) { + term = "Fall"; + } + return `${term}-${year}`; +}; diff --git a/scripts/mdx-scripts/news-conversion.js b/scripts/mdx-scripts/news-conversion.js index aa334d3..afd26ef 100644 --- a/scripts/mdx-scripts/news-conversion.js +++ b/scripts/mdx-scripts/news-conversion.js @@ -6,12 +6,14 @@ global.window = window; var showdown = require("showdown"); const converterShowdown = new showdown.Converter(); const libxmljs = require("libxmljs"); +const getTerm = require("./getTerm.js"); -fs.readFile("./news.xml", "utf8", (err, data) => { +fs.readFile("../../news.xml", "utf8", (err, data) => { if (err) { console.error(err); return; } + data = data.replace(//, ""); parseXML(data); }); @@ -31,39 +33,16 @@ const nodeChildrenToString = (nodeChildren) => { return string; }; -const getTerm = (dateStr) => { - const date = new Date(dateStr); - let term = ""; - const year = date.getUTCFullYear(); - if ( - new Date(`${year}-01-01`).getTime() <= date.getTime() && - date.getTime() <= new Date(`${year}-04-30`).getTime() - ) { - term = "Winter"; - } else if ( - new Date(`${year}-05-01`).getTime() <= date.getTime() && - date.getTime() <= new Date(`${year}-08-31`).getTime() - ) { - term = "Spring"; - } else if ( - new Date(`${year}-09-01`).getTime() <= date.getTime() && - date.getTime() <= new Date(`${year}-12-31`).getTime() - ) { - term = "Fall"; - } - return `-${term}-${year}-`; -}; - const parseXML = (XML) => { const xmlDoc = libxmljs.parseHtml(XML); let newsdefsChildren = xmlDoc.get("//newsdefs").childNodes(); let currentTerm = ""; - for (let i = 0; i < newsdefsChildren.length; ++i) { - if (newsdefsChildren[i].type() === "element") { - const author = newsdefsChildren[i].attr("author").value(); - const date = newsdefsChildren[i].attr("date").value(); + newsdefsChildren.forEach((newsItem) => { + if (newsItem.type() === "element") { + const author = newsItem.attr("author").value(); + const date = newsItem.attr("date").value(); currentTerm = getTerm(date); - const contentNodes = newsdefsChildren[i].childNodes(); + const contentNodes = newsItem.childNodes(); const content = converterShowdown.makeMarkdown( nodeChildrenToString(contentNodes) ); @@ -86,5 +65,5 @@ ${content}`; } ); } - } + }); };