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); + } }); }, }