diff --git a/blogContent/posts/programming/media/fibonacci/ConstantTimeComplexity.png b/blogContent/posts/programming/media/fibonacci/ConstantTimeComplexity.png
new file mode 100644
index 0000000..2c781f4
Binary files /dev/null and b/blogContent/posts/programming/media/fibonacci/ConstantTimeComplexity.png differ
diff --git a/posts/singlePost.js b/posts/singlePost.js
index 04dc292..452fdc5 100644
--- a/posts/singlePost.js
+++ b/posts/singlePost.js
@@ -1,36 +1,5 @@
-const utils = require('../utils/utils.js');
+const postGenerator = require('../utils/markdownToHTML.js');
-const sql = require('../utils/sql');
-
-const Remarkable = require('remarkable');
-const hljs = require('highlight.js');
-
-const pandoc = require('../utils/markdownToHTML.js');
-
-
-const md = new Remarkable(
-{
- html: true,
- highlight: function (str, lang)
- {
- if (lang && hljs.getLanguage(lang))
- {
- try
- {
- return hljs.highlight(lang, str).value;
- }
- catch (err) {}
- }
-
- try
- {
- return hljs.highlightAuto(str).value;
- }
- catch (err) {}
-
- return ''; // use external default escaping
- }
-});
module.exports=
@@ -43,69 +12,7 @@ module.exports=
*/
renderPreview: function(post)
{
- return new Promise(function(resolve, reject)
- {
- //var html = "
";
-
- var html = "
";
-
- //image
- if(!(post.picture_url === "n/a"))
- {
- html +="
";
- }
-
- html += "
";
- //title
- html += "
" + post.name + "
";
- //date
- html += "" +
- post.published.toDateString() + "
";
- html +="";
-
- html += "
";
-
- try
- {
- sql.getCategory(post.category_id).then(function(category)
- {
- var pathName = "blogContent/posts/" + category[0].url + "/"
- + post.url + ".md";
- var markDown = utils.getFileContents(pathName).toString();
-
- markDown = markDown.split("(media/").join("(" + "../blogContent/posts/"
- + category[0].url + "/media/");
- var htmlPost = md.render(markDown).split("
");
-
- for(var i = 0; i < 3; i++)
- {
- html+= "
" + htmlPost[i];
- }
-
- html = html.split("").join("");
-
- html += " \n" +
- "
\n" +
- "
\n";
-
- html += "
";
-
- resolve(html)
- }).catch(function(error)
- {
- reject(error);
- });
- }
- catch(ex)
- {
- reject(ex);
- }
- });
+ return postGenerator.generateBlogPost(post, 3);
},
/**
@@ -117,56 +24,6 @@ module.exports=
*/
renderPost: function(post)
{
- return new Promise(function (resolve, reject)
- {
- var htmlHead = "
";
- //image
- if(!(post.picture_url === "n/a"))
- {
- htmlHead +="
";
- }
-
- htmlHead += "
";
- //title
- htmlHead += "
" + post.name + "
";
- //date
- htmlHead += "" +
- post.published.toDateString() + "
";
- htmlHead +="";
-
- var html = "
";
- try
- {
- sql.getCategory(post.category_id).then(function(category)
- {
- const pathName = "blogContent/posts/" + category[0].url + "/"
- + post.url + ".md";
- var markDown = utils.getFileContents(pathName).toString();
- markDown = markDown.split("(media/").join("(" + "../blogContent/posts/"
- + category[0].url + "/media/");
- //html += md.render(markDown);
-
- pandoc.convertToHTML(markDown).then(function(result)
- {
- html +=result;
-
- html = html.split("
").join("
");
- html += "
";
-
- resolve(htmlHead + html);
- }).catch(function(error)
- {
- reject(error);
- })
-
- });
- }
- catch(ex)
- {
- reject(ex);
- }
- });
+ return postGenerator.generateBlogPost(post, -1);
}
};
\ No newline at end of file
diff --git a/utils/markdownToHTML.js b/utils/markdownToHTML.js
index d9e134a..60ee0a0 100644
--- a/utils/markdownToHTML.js
+++ b/utils/markdownToHTML.js
@@ -1,25 +1,129 @@
const pandoc = require('node-pandoc');
-// const args = '-t html5';
-const args = '-S --base-header-level=1 --toc --toc-depth=6 -N --normalize -s --mathjax -t html5';
+const utils = require('../utils/utils.js');
+
+const sql = require('../utils/sql');
+
+const argsFull = '-S --base-header-level=1 --toc --toc-depth=3 -N --normalize -s --mathjax -t html5';
+const argsPreview = '-S --normalize -s --mathjax -t html5';
+
-console.log("");
module.exports=
{
- convertToHTML: function(markdownContents)
+
+ generateBlogPost: function(post, blocks)
+ {
+ return new Promise(function(resolve, reject)
+ {
+ Promise.all([module.exports.generateBlogPostHeader(post),
+ module.exports.generateBlogPostBody(post, blocks),
+ module.exports.generateBlogPostFooter()]).then(function(content)
+ {
+ resolve(content.join(''));
+ })
+ });
+ },
+
+ generateBlogPostHeader: function(post)
+ {
+
+ var htmlHead = "
";
+ //image
+ if(!(post.picture_url === "n/a"))
+ {
+ htmlHead +="
";
+ }
+
+ htmlHead += "
";
+ //title
+ htmlHead += "
" + post.name + "
";
+ //date
+ htmlHead += "" +
+ post.published.toDateString() + "
";
+ htmlHead +="" + "
";
+
+ return htmlHead;
+ },
+
+
+ generateBlogPostBody: function(post, blocks)
+ {
+ return new Promise(function(resolve, reject)
+ {
+ sql.getCategory(post.category_id).then(function(category)
+ {
+ const pathName = "blogContent/posts/" + category[0].url + "/"
+ + post.url + ".md";
+ var markDown = utils.getFileContents(pathName).toString();
+ markDown = markDown.split("(media/").join("(" + "../blogContent/posts/"
+ + category[0].url + "/media/");
+
+ module.exports.convertToHTML(markDown, 1).then(function(result)
+ {
+
+ result = result.split("
").join("");
+
+ if(blocks == -1)
+ resolve(result);
+
+ var htmlBlocks = result.split("");
+ var html = "";
+ for(var i = 0; i < blocks; i++)
+ {
+ html += "
" + htmlBlocks[i];
+ }
+
+ html += "
\n" +
+ "
\n" +
+ "
\n";
+
+ resolve(html);
+
+ }).catch(function(error)
+ {
+ reject(error);
+ })
+
+ });
+ })
+ },
+
+ generateBlogPostFooter: function()
+ {
+ return "";
+ },
+
+ convertToHTML: function(markdownContents, type)
{
return new Promise(function(resolve, reject)
{
// Set your callback function
- callback = function (err, result)
+ callback = function (err, html)
{
if (err)
{
reject(err);
}
- resolve(result);
+
+
+ html = html.split("
").join("
");
+
+
+ resolve(html);
};
- pandoc(markdownContents, args, callback);
+ if(type == -1)
+ {
+ pandoc(markdownContents, argsFull, callback);
+ }
+ else
+ {
+ pandoc(markdownContents, argsPreview, callback);
+ }
});
},
}