aboutsummaryrefslogtreecommitdiff
path: root/save-article.js
diff options
context:
space:
mode:
authorFuwn <[email protected]>2020-11-06 18:24:26 -0800
committerFuwn <[email protected]>2020-11-06 18:24:26 -0800
commit9cdce4254700691301608c6f1d3081950023cc4f (patch)
tree9d24529acc19b354f80cb2d610aa1e7686f4d530 /save-article.js
downloadblog-9cdce4254700691301608c6f1d3081950023cc4f.tar.xz
blog-9cdce4254700691301608c6f1d3081950023cc4f.zip
repo: initial :star:
Diffstat (limited to 'save-article.js')
-rw-r--r--save-article.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/save-article.js b/save-article.js
new file mode 100644
index 0000000..63145a2
--- /dev/null
+++ b/save-article.js
@@ -0,0 +1,40 @@
+const ejs = require("ejs");
+const fs = require("fs");
+const mkdirp = require("mkdirp");
+const path = require("path");
+
+function saveArticle(article) {
+ return new Promise((resolve, reject) => {
+ fs.readFile("templates/article.ejs", (err, articleTemplate) => {
+ if (err) { return reject(err); }
+
+ fs.readFile("templates/layout.ejs", (err, layoutTemplate) => {
+ if (err) { return reject(err); }
+
+ const articleBodyHTML = ejs.render(articleTemplate.toString(), article);
+ const articleHTML = ejs.render(layoutTemplate.toString(), {
+ title: article.title + " | Fuwn",
+ body: articleBodyHTML,
+ description: article.description || article.summary,
+ });
+
+ const articlePath = path.join("output", article.route);
+
+ mkdirp(articlePath, err => {
+ if (err) { return reject(err); }
+
+ fs.writeFile(
+ path.join(articlePath, "index.html"),
+ articleHTML,
+ err => {
+ if (err) { return reject(err); }
+ resolve("ok");
+ }
+ );
+ });
+ });
+ });
+ });
+}
+
+module.exports = saveArticle;