Misc. fixes
This commit is contained in:
parent
1800a22fb4
commit
8d6da95e27
|
@ -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(/<!DOCTYPE.*>/, "");
|
||||
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(/<br>/g, "\n");
|
||||
}
|
||||
let registerLink = "";
|
||||
// detects a link in markdown such as [CSC Club Website](<http://csclub.uwaterloo.ca//>)
|
||||
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}`;
|
|||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version='1.0'?>
|
||||
|
||||
<!DOCTYPE eventdefs SYSTEM "csc.dtd" [<!ENTITY mdash "—">]>
|
||||
<eventdefs>
|
||||
<!-- Fall 2016 -->
|
||||
<eventitem date="2016-12-05" time="6:00 PM" room="MC Comfy" title="CSC/PMC EOT Party">
|
||||
|
|
|
@ -7181,7 +7181,7 @@ to get a hands on feeling for the language. Don't worry if you haven't seen the
|
|||
|
||||
|
||||
|
||||
<!--spring 2007-->
|
||||
<!--Spring 2007-->
|
||||
|
||||
<eventitem date="2007-07-17" time="7:00 PM" room="AL 116" title="C++0x - An Overview">
|
||||
<short>Bjarne Stroustrup</short>
|
||||
|
|
|
@ -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}`;
|
||||
};
|
|
@ -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(/<!DOCTYPE.*>/, "");
|
||||
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}`;
|
|||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue