|
|
|
@ -4,10 +4,10 @@ const {
|
|
|
|
|
const fs = require("fs");
|
|
|
|
|
const converter = require("./showdown")(2);
|
|
|
|
|
|
|
|
|
|
let folder = __dirname + "/../";
|
|
|
|
|
let folder = `${__dirname}/../`;
|
|
|
|
|
console.log("Refreshing blog sub-sites...");
|
|
|
|
|
|
|
|
|
|
fs.readFile(folder + "index.html", function (_, html) {
|
|
|
|
|
fs.readFile(`${folder}index.html`, function (_, html) {
|
|
|
|
|
let templateDom = new JSDOM(html);
|
|
|
|
|
// remove all non-blog stuff from the template (which is just our index.html)
|
|
|
|
|
let noBlog = templateDom.window.document.getElementsByClassName("no-blog");
|
|
|
|
@ -18,53 +18,50 @@ fs.readFile(folder + "index.html", function (_, html) {
|
|
|
|
|
for (let i = 0; i < elements.length; i++) {
|
|
|
|
|
let element = elements[i];
|
|
|
|
|
if (element.src && element.src.startsWith("./"))
|
|
|
|
|
element.src = "../" + element.src.substring(2);
|
|
|
|
|
element.src = `../${element.src.substring(2)}`;
|
|
|
|
|
if (element.href && element.href.startsWith("./"))
|
|
|
|
|
element.href = "../" + element.href.substring(2);
|
|
|
|
|
element.href = `../${element.href.substring(2)}`;
|
|
|
|
|
}
|
|
|
|
|
let template = templateDom.serialize();
|
|
|
|
|
|
|
|
|
|
fs.readFile(folder + "blog/src/posts.json", function (_, data) {
|
|
|
|
|
let json = JSON.parse(data);
|
|
|
|
|
fs.readFile(`${folder}blog/src/posts.json`, function (_, data) {
|
|
|
|
|
let json = JSON.parse(data.toString());
|
|
|
|
|
for (let i = 0; i < json.length; i++) {
|
|
|
|
|
let post = json[i];
|
|
|
|
|
fs.readFile(folder + "blog/src/" + post.id + ".md", function (_, content) {
|
|
|
|
|
fs.readFile(`${folder}blog/src/${post.id}.md`, function (_, content) {
|
|
|
|
|
let dom = new JSDOM(template);
|
|
|
|
|
let document = dom.window.document;
|
|
|
|
|
|
|
|
|
|
document.title += " - " + post.name;
|
|
|
|
|
document.title += ` - ${post.name}`;
|
|
|
|
|
document.querySelector('meta[property="og:title"]').setAttribute("content", post.name);
|
|
|
|
|
document.querySelector('meta[name="description"]').setAttribute("content", post.summary);
|
|
|
|
|
document.querySelector('meta[property="og:description"]').setAttribute("content", post.summary);
|
|
|
|
|
|
|
|
|
|
let nav = "";
|
|
|
|
|
nav += '<a class="nav-item nav-link" href="/#blog">Back to Main Page</a>';
|
|
|
|
|
let last = getAdjacentPost(json, i, -1);
|
|
|
|
|
if (last)
|
|
|
|
|
nav += '<a class="nav-item nav-link" href="/blog/' + last.id + '">Previous ' + post.cat + ' Post</a>';
|
|
|
|
|
let next = getAdjacentPost(json, i, 1);
|
|
|
|
|
if (next)
|
|
|
|
|
nav += '<a class="nav-item nav-link" href="/blog/' + next.id + '">Next ' + post.cat + ' Post</a>';
|
|
|
|
|
document.getElementById("nav-items").innerHTML = nav;
|
|
|
|
|
document.getElementById("nav-items").innerHTML = /*html*/ `
|
|
|
|
|
<a class="nav-item nav-link" href="/#blog">Back to Main Page</a>
|
|
|
|
|
${last ? /*html*/ `<a class="nav-item nav-link" href="/blog/${last.id}">Previous ${post.cat} Post</a>` : ""}
|
|
|
|
|
${next ? /*html*/ `<a class="nav-item nav-link" href="/blog/${next.id}">Next ${post.cat} Post</a>` : ""}
|
|
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
let c = "";
|
|
|
|
|
c += '<div class="list-display rounded">';
|
|
|
|
|
c += '<div class="blog-isolated">'
|
|
|
|
|
c += '<h1>' + post.name + '</h1>';
|
|
|
|
|
c += '<div id="blog-post-' + post.id + '">'
|
|
|
|
|
if (post.archived)
|
|
|
|
|
c += "<p><i>This post has been archived.</i></p>"
|
|
|
|
|
c += converter.makeHtml(content.toString());
|
|
|
|
|
c += '</div>';
|
|
|
|
|
c += '<span class="text-muted project-status blog-isolated-status">' + post.date + "</span>";
|
|
|
|
|
if (post.discuss)
|
|
|
|
|
c += '<a href="' + post.discuss + '" class="blog-discuss" id="blog-discuss-' + post.id + '">Discuss this post</a>'
|
|
|
|
|
c += '</div></div>';
|
|
|
|
|
document.getElementById("main").innerHTML = c;
|
|
|
|
|
document.getElementById("main").innerHTML = /*html*/ `
|
|
|
|
|
<div class="list-display rounded">
|
|
|
|
|
<div class="blog-isolated">
|
|
|
|
|
<h1>${post.name}</h1>
|
|
|
|
|
<div id="blog-post-${post.id}">
|
|
|
|
|
${post.archived ? /*html*/ `<p><i>This post has been archived.</i></p>` : ""}
|
|
|
|
|
${converter.makeHtml(content.toString())}
|
|
|
|
|
</div>
|
|
|
|
|
<span class="text-muted project-status blog-isolated-status">${post.date}</span>
|
|
|
|
|
${post.discuss ? /*html*/ `<a href="${post.discuss}" class="blog-discuss" id="blog-discuss-${post.id}">Discuss this post</a>` : ""}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
let ret = dom.serialize();
|
|
|
|
|
fs.mkdir(folder + "blog", function () {
|
|
|
|
|
fs.writeFile(folder + "blog/" + post.id + ".html", ret, function (_, _) {});
|
|
|
|
|
fs.mkdir(`${folder}blog`, function () {
|
|
|
|
|
fs.writeFile(`${folder}blog/${post.id}.html`, ret, function () {});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
@ -78,7 +75,7 @@ function getAdjacentPost(json, index, move) {
|
|
|
|
|
let post = json[index];
|
|
|
|
|
if (!post)
|
|
|
|
|
break;
|
|
|
|
|
if (post.cat == cat && !post.archived)
|
|
|
|
|
if (post.cat === cat && !post.archived)
|
|
|
|
|
return post;
|
|
|
|
|
}
|
|
|
|
|
}
|