Misc. fixes
This commit is contained in:
parent
1800a22fb4
commit
8d6da95e27
|
@ -6,12 +6,14 @@ global.window = window;
|
||||||
var showdown = require("showdown");
|
var showdown = require("showdown");
|
||||||
const converterShowdown = new showdown.Converter();
|
const converterShowdown = new showdown.Converter();
|
||||||
const libxmljs = require("libxmljs");
|
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) {
|
if (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
data = data.replace(/<!DOCTYPE.*>/, "");
|
||||||
parseXML(data);
|
parseXML(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -41,6 +43,8 @@ const parseTime = (dateStr, timeStr) => {
|
||||||
return date;
|
return date;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const nodeChildrenToString = (nodeChildren) => {
|
const nodeChildrenToString = (nodeChildren) => {
|
||||||
let string = "";
|
let string = "";
|
||||||
for (let i = 0; i < nodeChildren.length; ++i) {
|
for (let i = 0; i < nodeChildren.length; ++i) {
|
||||||
|
@ -56,54 +60,36 @@ const nodeChildrenToString = (nodeChildren) => {
|
||||||
const parseXML = (XML) => {
|
const parseXML = (XML) => {
|
||||||
const xmlDoc = libxmljs.parseHtml(XML);
|
const xmlDoc = libxmljs.parseHtml(XML);
|
||||||
let eventdefsChildren = xmlDoc.get("//eventdefs").childNodes();
|
let eventdefsChildren = xmlDoc.get("//eventdefs").childNodes();
|
||||||
let currentTerm = "";
|
eventdefsChildren.forEach((eventItem) => {
|
||||||
for (let i = 0; i < eventdefsChildren.length; ++i) {
|
|
||||||
// sometimes there's events that are commented out, hopefully this catches that
|
// sometimes there's events that are commented out, hopefully this catches that
|
||||||
if (
|
if (eventItem.type() === "element") {
|
||||||
eventdefsChildren[i].type() === "comment" &&
|
const title = eventItem.attr("title").value();
|
||||||
/((winter)|(fall)|(spring))/.exec(
|
const shortNodes = eventItem.get(".//short").childNodes();
|
||||||
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();
|
|
||||||
let short = converterShowdown.makeMarkdown(
|
let short = converterShowdown.makeMarkdown(
|
||||||
nodeChildrenToString(shortNodes)
|
nodeChildrenToString(shortNodes)
|
||||||
);
|
);
|
||||||
// remove newlines from short
|
// remove newlines from short
|
||||||
short = short.replace(/\n/g, "");
|
short = short.replace(/\n/g, "");
|
||||||
const dateStr = eventdefsChildren[i].attr("date").value();
|
const dateStr = eventItem.attr("date").value();
|
||||||
const timeStr = eventdefsChildren[i].attr("time").value();
|
const timeStr = eventItem.attr("time").value();
|
||||||
const date = parseTime(dateStr, timeStr);
|
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;
|
const online = location.toLowerCase() === "online" ? true : false;
|
||||||
let abstract = short;
|
let abstract = short;
|
||||||
if (eventdefsChildren[i].get(".//abstract") !== undefined) {
|
if (eventItem.get(".//abstract") !== undefined) {
|
||||||
const abstractNodes = eventdefsChildren[i]
|
const abstractNodes = eventItem.get(".//abstract").childNodes();
|
||||||
.get(".//abstract")
|
|
||||||
.childNodes();
|
|
||||||
abstract = converterShowdown.makeMarkdown(
|
abstract = converterShowdown.makeMarkdown(
|
||||||
nodeChildrenToString(abstractNodes)
|
nodeChildrenToString(abstractNodes)
|
||||||
);
|
);
|
||||||
abstract = abstract.replace(/<br>/g, "\n");
|
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 = {
|
const mdx = `export const metadata = {
|
||||||
name: "${title}",
|
name: "${title}",
|
||||||
short: "${short}",
|
short: "${short}",
|
||||||
date: new Date("${date.toString()}"),
|
date: new Date("${date.toString()}"),
|
||||||
online: ${online},
|
online: ${online},
|
||||||
location: "${location}",${registerLink}
|
location: "${location}",
|
||||||
}
|
}
|
||||||
|
|
||||||
${abstract}`;
|
${abstract}`;
|
||||||
|
@ -127,5 +113,5 @@ ${abstract}`;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<?xml version='1.0'?>
|
<?xml version='1.0'?>
|
||||||
|
|
||||||
|
<!DOCTYPE eventdefs SYSTEM "csc.dtd" [<!ENTITY mdash "—">]>
|
||||||
<eventdefs>
|
<eventdefs>
|
||||||
<!-- Fall 2016 -->
|
<!-- Fall 2016 -->
|
||||||
<eventitem date="2016-12-05" time="6:00 PM" room="MC Comfy" title="CSC/PMC EOT Party">
|
<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">
|
<eventitem date="2007-07-17" time="7:00 PM" room="AL 116" title="C++0x - An Overview">
|
||||||
<short>Bjarne Stroustrup</short>
|
<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");
|
var showdown = require("showdown");
|
||||||
const converterShowdown = new showdown.Converter();
|
const converterShowdown = new showdown.Converter();
|
||||||
const libxmljs = require("libxmljs");
|
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) {
|
if (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
data = data.replace(/<!DOCTYPE.*>/, "");
|
||||||
parseXML(data);
|
parseXML(data);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -31,39 +33,16 @@ const nodeChildrenToString = (nodeChildren) => {
|
||||||
return string;
|
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 parseXML = (XML) => {
|
||||||
const xmlDoc = libxmljs.parseHtml(XML);
|
const xmlDoc = libxmljs.parseHtml(XML);
|
||||||
let newsdefsChildren = xmlDoc.get("//newsdefs").childNodes();
|
let newsdefsChildren = xmlDoc.get("//newsdefs").childNodes();
|
||||||
let currentTerm = "";
|
let currentTerm = "";
|
||||||
for (let i = 0; i < newsdefsChildren.length; ++i) {
|
newsdefsChildren.forEach((newsItem) => {
|
||||||
if (newsdefsChildren[i].type() === "element") {
|
if (newsItem.type() === "element") {
|
||||||
const author = newsdefsChildren[i].attr("author").value();
|
const author = newsItem.attr("author").value();
|
||||||
const date = newsdefsChildren[i].attr("date").value();
|
const date = newsItem.attr("date").value();
|
||||||
currentTerm = getTerm(date);
|
currentTerm = getTerm(date);
|
||||||
const contentNodes = newsdefsChildren[i].childNodes();
|
const contentNodes = newsItem.childNodes();
|
||||||
const content = converterShowdown.makeMarkdown(
|
const content = converterShowdown.makeMarkdown(
|
||||||
nodeChildrenToString(contentNodes)
|
nodeChildrenToString(contentNodes)
|
||||||
);
|
);
|
||||||
|
@ -86,5 +65,5 @@ ${content}`;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue