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}`;
}
);
}
- }
+ });
};