From a910ae02ca40cad1ddf3a10c822517cac3960b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Sko=C5=99epa?= <jakub@skorepa.info> Date: Mon, 7 Mar 2016 21:15:23 +0100 Subject: [PATCH] Promisified (jobified) markdown.js TODO: fix lightboxes --- index.js | 10 +++++- sitegin/config.js | 2 +- sitegin/{legacy => }/markdown.js | 61 +++++++++----------------------- sitegin/pipeline.js | 2 +- sitegin/sitegin.js | 2 ++ sitegin/toURL.js | 10 ++++++ 6 files changed, 39 insertions(+), 48 deletions(-) rename sitegin/{legacy => }/markdown.js (61%) create mode 100644 sitegin/toURL.js diff --git a/index.js b/index.js index 8d611eca..b9c8a80e 100755 --- a/index.js +++ b/index.js @@ -13,16 +13,24 @@ require('./sitegin/sitegin')({ function run() { runAgain = false; if(isRunning) { + console.log("Generator is still running. Queing another run after it finishes.") runAgain = true; return; } + console.log("================================================================================") + console.log("Running generator") isRunning = true; jobs.run('pipeline',jobs) .then(function() { isRunning = false; + console.log("Generator finished") if(runAgain) run(); }) - .catch(e => console.log(e.stack)); + .catch(function(e) { + isRunning = false; + if(runAgain) run(); + console.log(e.stack) + }); } console.log('Sitegin successfully loaded'); diff --git a/sitegin/config.js b/sitegin/config.js index 3030b938..375432a5 100644 --- a/sitegin/config.js +++ b/sitegin/config.js @@ -16,7 +16,7 @@ module.exports = function() { config: { builddir: builddir, watch: watch, - articlesLocation: 'content/articles' + articlesLocation: 'content/articles', } }) } diff --git a/sitegin/legacy/markdown.js b/sitegin/markdown.js similarity index 61% rename from sitegin/legacy/markdown.js rename to sitegin/markdown.js index e6bb5404..81b2bd27 100644 --- a/sitegin/legacy/markdown.js +++ b/sitegin/markdown.js @@ -1,22 +1,21 @@ +/* + * Transforms pages[0..length].content from markdown to HTML + */ + var marked = require('marked'); var renderer = new marked.Renderer(); -var toURL = require('./transformer-urlizetags.js').toURL; var highlightjs = require('highlight.js'); var path = require('path'); -var minificationOK = true; -try {require('lwip');} -catch(e) { - minificationOK = false; -} -if(process.argv[2] !== "compileonly") minificationOK = false; +var jobs = require('./jobs'); -var images = {}; +var toURL = function(url) { + return jobs.run('toURL', url); +} renderer.heading = function(text, level, raw) { return '<h' + (level+2) + ' id="' - + this.options.headerPrefix + toURL(raw) + '">' + text @@ -41,41 +40,14 @@ marked.setOptions({ smartypants: false, }); -module.exports = function() { - var tr = this; - tr.fancyname = "transformer markdown"; - tr.pre = function(cb, list) { - if(minificationOK) { - list.images.forEach((img) => { - images[img.file] = img; - }); - } - cb(); - }; - tr.forEachPage = function(article, cb) { - article.origContent = article.content; +module.exports = function(obj) { + obj.pages.forEach(function(article) { renderer.image = function(href, title, text) { href = href.split(path.sep).join("/"); href = href.split(" ="); var size = href[1]; href = href[0]; - var rel = path.relative(process.cwd(),path.resolve(article.file,href)); - rel = rel.split(path.sep).join("/"); - var img = images[rel]; - var full; - if(img) { - if(img.minified) { - full = href; - href = path.relative(article.file, img.thumb); - }else if(!minificationOK) { - full = href; - } - } - else if(process.argv[3] !== "final") { - if(!href.match("://")) { - href = "https://ok1kvk.cz"+href; - } - } + var rel = path.relative(process.cwd(),path.resolve(article.filename,href)); var out = '<img src="' + href + '" alt="' + text + '"'; if(size !== undefined) { @@ -86,15 +58,14 @@ module.exports = function() { if(size.length > 1 && size[1].length > 0) { out += ' height="' + size[1] + '"'; } - } else if(!minificationOK) { - out += ' style="max-width:512px"'; } if (title) { out += ' title="' + title + '"'; } - + out += '>'; - if(full) { + if(true) { // if lightbox + var full = href; var a = '<a href="'+full+'"'; a += ' data-lightbox="group"'; a += ' data-title="' + text + '"'; @@ -116,6 +87,6 @@ module.exports = function() { }, renderer: renderer }); - cb(); - } + }); + return Promise.resolve(obj); } diff --git a/sitegin/pipeline.js b/sitegin/pipeline.js index 0137a6f3..02fd54ad 100644 --- a/sitegin/pipeline.js +++ b/sitegin/pipeline.js @@ -3,5 +3,5 @@ */ module.exports = function(jobs) { - return jobs.runSequence('config','readFiles','parseHugo','gitInfo','print'); + return jobs.runSequence('config','readFiles','parseHugo','gitInfo','markdown','print'); } diff --git a/sitegin/sitegin.js b/sitegin/sitegin.js index eb24ec66..504a8b7b 100644 --- a/sitegin/sitegin.js +++ b/sitegin/sitegin.js @@ -5,9 +5,11 @@ module.exports = function(config) { config, ['config', './config'], ['gitInfo', './gitInfo'], + ['markdown', './markdown'], ['parseHugo', './parseHugo'], ['print', './print'], ['readFiles', './readFiles'], + ['toURL', './toURL'], ['pipeline','./pipeline'] ) diff --git a/sitegin/toURL.js b/sitegin/toURL.js new file mode 100644 index 00000000..d94e8056 --- /dev/null +++ b/sitegin/toURL.js @@ -0,0 +1,10 @@ + +var Latinise={};Latinise.latin_map={"Ă":"A","Ä‚":"A","áş®":"A","Ặ":"A","áş°":"A","Ẳ":"A","áş´":"A","ÇŤ":"A","Ă‚":"A","Ấ":"A","Ậ":"A","Ầ":"A","Ẩ":"A","Ẫ":"A","Ă„":"A","Çž":"A","Ȧ":"A","Ç ":"A","áş ":"A","Č€":"A","Ă€":"A","Ả":"A","Č‚":"A","Ä€":"A","Ä„":"A","Ă…":"A","Çş":"A","Ḁ":"A","Čş":"A","Ă":"A","Ꜳ":"AA","Æ":"AE","ÇĽ":"AE","Ǣ":"AE","ęś´":"AO","Ꜷ":"AU","Ꜹ":"AV","ęśş":"AV","Ꜽ":"AY","Ḃ":"B","Ḅ":"B","Ć":"B","Ḇ":"B","É":"B","Ć‚":"B","Ć":"C","ÄŚ":"C","Ç":"C","á¸":"C","Ä":"C","ÄŠ":"C","Ƈ":"C","Č»":"C","ÄŽ":"D","á¸":"D","Ḓ":"D","Ḋ":"D","Ḍ":"D","ĆŠ":"D","Ḏ":"D","Dz":"D","Ç…":"D","Ä":"D","Ć‹":"D","DZ":"DZ","Ç„":"DZ","É":"E","Ä”":"E","Äš":"E","Ȩ":"E","Ḝ":"E","ĂŠ":"E","áşľ":"E","Ệ":"E","Ề":"E","Ể":"E","Ễ":"E","á¸":"E","Ă‹":"E","Ä–":"E","Ẹ":"E","Č„":"E","Ă":"E","áşş":"E","Ȇ":"E","Ä’":"E","Ḗ":"E","Ḕ":"E","Ä":"E","Ɇ":"E","Ẽ":"E","Ḛ":"E","Ꝫ":"ET","Ḟ":"F","Ć‘":"F","Ç´":"G","Äž":"G","Ǧ":"G","Ģ":"G","Äś":"G","Ä ":"G","Ć“":"G","Ḡ":"G","Ǥ":"G","Ḫ":"H","Čž":"H","Ḩ":"H","Ĥ":"H","Ⱨ":"H","Ḧ":"H","Ḣ":"H","Ḥ":"H","Ħ":"H","ĂŤ":"I","Ĭ":"I","ÇŹ":"I","ĂŽ":"I","ĂŹ":"I","Ḯ":"I","Ä°":"I","Ị":"I","Č":"I","ĂŚ":"I","á»":"I","ČŠ":"I","ÄŞ":"I","Ä®":"I","Ć—":"I","Ĩ":"I","Ḭ":"I","ęťą":"D","ęť»":"F","ęť˝":"G","ęž‚":"R","ęž„":"S","Ꞇ":"T","Ꝭ":"IS","Ä´":"J","É":"J","Ḱ":"K","Ǩ":"K","Ķ":"K","Ⱪ":"K","ęť‚":"K","Ḳ":"K","Ć":"K","Ḵ":"K","Ꝁ":"K","ęť„":"K","Äą":"L","Č˝":"L","Ä˝":"L","Ä»":"L","Ḽ":"L","Ḷ":"L","Ḹ":"L","â± ":"L","ęť":"L","Ḻ":"L","Äż":"L","Ɫ":"L","Ç":"L","Ĺ":"L","LJ":"LJ","Ḿ":"M","Ṁ":"M","áą‚":"M","â±®":"M","Ĺ":"N","Ň":"N","Ĺ…":"N","Ṋ":"N","áą„":"N","Ṇ":"N","Ǹ":"N","Ćť":"N","áą":"N","Č ":"N","Ç‹":"N","Ă‘":"N","ÇŠ":"NJ","Ă“":"O","ĹŽ":"O","Ç‘":"O","Ă”":"O","á»":"O","á»":"O","á»’":"O","á»”":"O","á»–":"O","Ă–":"O","ČŞ":"O","Č®":"O","Č°":"O","Ọ":"O","Ĺ":"O","ČŚ":"O","Ă’":"O","Ỏ":"O","Ć ":"O","Ớ":"O","Ợ":"O","Ờ":"O","Ở":"O","á» ":"O","ČŽ":"O","Ꝋ":"O","Ꝍ":"O","ĹŚ":"O","áą’":"O","áą":"O","Ćź":"O","ÇŞ":"O","Ǭ":"O","Ă":"O","Çľ":"O","Ă•":"O","Ṍ":"O","Ṏ":"O","Ȭ":"O","Ƣ":"OI","Ꝏ":"OO","Ć":"E","Ɔ":"O","Ȣ":"OU","áą”":"P","áą–":"P","ęť’":"P","Ƥ":"P","ęť”":"P","Ᵽ":"P","ęť":"P","ęť":"Q","ęť–":"Q","Ĺ”":"R","Ĺ":"R","Ĺ–":"R","áą":"R","áąš":"R","áąś":"R","Č":"R","Č’":"R","áąž":"R","ÉŚ":"R","Ɽ":"R","ęśľ":"C","ĆŽ":"E","Ĺš":"S","Ṥ":"S","Ĺ ":"S","Ṧ":"S","Ĺž":"S","Ĺś":"S","Č":"S","áą ":"S","Ṣ":"S","Ṩ":"S","Ť":"T","Ţ":"T","áą°":"T","Čš":"T","Čľ":"T","Ṫ":"T","Ṭ":"T","Ƭ":"T","áą®":"T","Ć®":"T","Ŧ":"T","Ɐ":"A","Ꞁ":"L","Ćś":"M","É…":"V","Ꜩ":"TZ","Ăš":"U","Ŭ":"U","Ç“":"U","Ă›":"U","Ṷ":"U","Ăś":"U","Ç—":"U","Ç™":"U","Ç›":"U","Ç•":"U","Ṳ":"U","Ụ":"U","Ĺ°":"U","Č”":"U","Ă™":"U","Ủ":"U","ĆŻ":"U","Ứ":"U","á»°":"U","Ừ":"U","Ử":"U","á»®":"U","Č–":"U","ĹŞ":"U","áąş":"U","Ų":"U","Ĺ®":"U","Ũ":"U","Ṹ":"U","áą´":"U","ęťž":"V","áąľ":"V","Ʋ":"V","Ṽ":"V","ęť ":"VY","áş‚":"W","Ĺ´":"W","áş„":"W","Ẇ":"W","áş":"W","Ẁ":"W","Ⱳ":"W","Ẍ":"X","Ẋ":"X","Ăť":"Y","Ŷ":"Y","Ÿ":"Y","Ẏ":"Y","á»´":"Y","Ỳ":"Y","Ćł":"Y","Ỷ":"Y","Ỿ":"Y","Ȳ":"Y","ÉŽ":"Y","Ỹ":"Y","Ĺą":"Z","Ĺ˝":"Z","áş":"Z","Ⱬ":"Z","Ĺ»":"Z","áş’":"Z","Ȥ":"Z","áş”":"Z","Ƶ":"Z","IJ":"IJ","Ĺ’":"OE","á´€":"A","á´":"AE","Ę™":"B","á´":"B","á´„":"C","á´…":"D","á´‡":"E","ęś°":"F","ɢ":"G","Ę›":"G","Ęś":"H","ÉŞ":"I","Ę":"R","á´Š":"J","á´‹":"K","Ęź":"L","á´Ś":"L","á´Ť":"M","É´":"N","á´Ź":"O","ɶ":"OE","á´":"O","á´•":"OU","á´":"P","Ę€":"R","á´Ž":"N","á´™":"R","ęś±":"S","á´›":"T","â±»":"E","á´š":"R","á´ś":"U","á´ ":"V","á´ˇ":"W","ĘŹ":"Y","á´˘":"Z","á":"a","Ä":"a","ắ":"a","áş·":"a","áş±":"a","áşł":"a","áşµ":"a","ÇŽ":"a","â":"a","ấ":"a","áş":"a","ầ":"a","áş©":"a","áş«":"a","ä":"a","Çź":"a","ȧ":"a","ǡ":"a","ạ":"a","Č":"a","Ă ":"a","ả":"a","Č":"a","Ä":"a","Ä…":"a","ᶏ":"a","áşš":"a","ĂĄ":"a","Ç»":"a","á¸":"a","ⱥ":"a","ĂŁ":"a","ęśł":"aa","æ":"ae","Ç˝":"ae","ÇŁ":"ae","ęśµ":"ao","ęś·":"au","ęśą":"av","ęś»":"av","ęś˝":"ay","á¸":"b","ḅ":"b","É“":"b","ḇ":"b","ᵬ":"b","ᶀ":"b","Ć€":"b","Ć":"b","ɵ":"o","ć":"c","ÄŤ":"c","ç":"c","ḉ":"c","ĉ":"c","É•":"c","Ä‹":"c","Ć":"c","ČĽ":"c","ÄŹ":"d","ḑ":"d","ḓ":"d","ȡ":"d","ḋ":"d","ḍ":"d","É—":"d","ᶑ":"d","ḏ":"d","áµ":"d","á¶":"d","Ä‘":"d","É–":"d","ĆŚ":"d","ı":"i","Č·":"j","Éź":"j","Ę„":"j","Çł":"dz","dž":"dz","Ă©":"e","Ä•":"e","Ä›":"e","Č©":"e","ḝ":"e","ĂŞ":"e","áşż":"e","ệ":"e","á»":"e","á»":"e","á»…":"e","ḙ":"e","Ă«":"e","Ä—":"e","áşą":"e","Č…":"e","è":"e","áş»":"e","ȇ":"e","Ä“":"e","ḗ":"e","ḕ":"e","ⱸ":"e","Ä™":"e","ᶒ":"e","ɇ":"e","áş˝":"e","ḛ":"e","ęť«":"et","ḟ":"f","Ć’":"f","áµ®":"f","ᶂ":"f","ǵ":"g","Äź":"g","ǧ":"g","ÄŁ":"g","Äť":"g","ġ":"g","É ":"g","ḡ":"g","á¶":"g","ÇĄ":"g","ḫ":"h","Čź":"h","ḩ":"h","ÄĄ":"h","ⱨ":"h","ḧ":"h","ḣ":"h","ḥ":"h","ɦ":"h","áş–":"h","ħ":"h","Ć•":"hv","Ă":"i","Ä":"i","Ç":"i","Ă®":"i","ĂŻ":"i","ḯ":"i","ị":"i","ȉ":"i","ì":"i","ỉ":"i","Č‹":"i","Ä«":"i","ÄŻ":"i","ᶖ":"i","ɨ":"i","Ä©":"i","á¸":"i","ęťş":"d","ꝼ":"f","ᵹ":"g","ęž":"r","ęž…":"s","ꞇ":"t","ęť":"is","Ç°":"j","ĵ":"j","Ęť":"j","ɉ":"j","ḱ":"k","Ç©":"k","Ä·":"k","ⱪ":"k","ęť":"k","ḳ":"k","Ć™":"k","ḵ":"k","ᶄ":"k","ęť":"k","ęť…":"k","Äş":"l","Ćš":"l","ɬ":"l","Äľ":"l","ÄĽ":"l","ḽ":"l","Č´":"l","ḷ":"l","ḹ":"l","ⱡ":"l","ꝉ":"l","ḻ":"l","Ĺ€":"l","É«":"l","ᶅ":"l","É":"l","Ĺ‚":"l","lj":"lj","Ĺż":"s","áşś":"s","áş›":"s","áşť":"s","ḿ":"m","áą":"m","áą":"m","ɱ":"m","ᵯ":"m","ᶆ":"m","Ĺ„":"n","Ĺ":"n","ņ":"n","áą‹":"n","ȵ":"n","áą…":"n","ṇ":"n","Çą":"n","ɲ":"n","ṉ":"n","Ćž":"n","áµ°":"n","ᶇ":"n","Éł":"n","ñ":"n","ÇŚ":"nj","Ăł":"o","ĹŹ":"o","Ç’":"o","Ă´":"o","ố":"o","á»™":"o","ồ":"o","ổ":"o","á»—":"o","ö":"o","Č«":"o","ČŻ":"o","ȱ":"o","ọ":"o","Ĺ‘":"o","ČŤ":"o","ò":"o","ỏ":"o","ơ":"o","á»›":"o","ợ":"o","ờ":"o","ở":"o","ỡ":"o","ČŹ":"o","ęť‹":"o","ꝍ":"o","ⱺ":"o","ĹŤ":"o","áą“":"o","áą‘":"o","Ç«":"o","Ç":"o","ø":"o","Çż":"o","õ":"o","ṍ":"o","ṏ":"o","Č":"o","ĆŁ":"oi","ꝏ":"oo","É›":"e","ᶓ":"e","É”":"o","ᶗ":"o","ČŁ":"ou","áą•":"p","áą—":"p","ęť“":"p","ĆĄ":"p","áµ±":"p","á¶":"p","ęť•":"p","áµ˝":"p","ęť‘":"p","ęť™":"q","Ę ":"q","É‹":"q","ęť—":"q","Ĺ•":"r","Ĺ™":"r","Ĺ—":"r","áą™":"r","áą›":"r","áąť":"r","Č‘":"r","Éľ":"r","ᵳ":"r","Č“":"r","áąź":"r","ÉĽ":"r","ᵲ":"r","ᶉ":"r","ÉŤ":"r","É˝":"r","ↄ":"c","ęśż":"c","É":"e","Éż":"r","Ĺ›":"s","ṥ":"s","š":"s","ṧ":"s","Ĺź":"s","Ĺť":"s","Č™":"s","ṡ":"s","ṣ":"s","áą©":"s","Ę‚":"s","áµ´":"s","ᶊ":"s","Čż":"s","ɡ":"g","á´‘":"o","á´“":"o","á´ť":"u","ĹĄ":"t","ĹŁ":"t","áą±":"t","Č›":"t","ȶ":"t","áş—":"t","ⱦ":"t","áą«":"t","áą":"t","Ć":"t","ṯ":"t","áµµ":"t","Ć«":"t","Ę":"t","ŧ":"t","ᵺ":"th","É":"a","á´‚":"ae","Çť":"e","áµ·":"g","ÉĄ":"h","Ę®":"h","ĘŻ":"h","á´‰":"i","Ęž":"k","ęž":"l","ÉŻ":"m","É°":"m","á´”":"oe","Éą":"r","É»":"r","Éş":"r","ⱹ":"r","ʇ":"t","ĘŚ":"v","ĘŤ":"w","ĘŽ":"y","ęś©":"tz","Ăş":"u","Ĺ":"u","Ç”":"u","Ă»":"u","áą·":"u","ĂĽ":"u","Ç":"u","Çš":"u","Çś":"u","Ç–":"u","áął":"u","ụ":"u","ű":"u","Č•":"u","Ăą":"u","ủ":"u","Ć°":"u","ứ":"u","á»±":"u","ừ":"u","á»":"u","ữ":"u","Č—":"u","Ĺ«":"u","áą»":"u","Ĺł":"u","ᶙ":"u","ĹŻ":"u","Ĺ©":"u","áąą":"u","áąµ":"u","ᵫ":"ue","ꝸ":"um","â±´":"v","ęťź":"v","áąż":"v","Ę‹":"v","ᶌ":"v","â±±":"v","áą˝":"v","ꝡ":"vy","áş":"w","ŵ":"w","áş…":"w","ẇ":"w","ẉ":"w","áş":"w","ⱳ":"w","áş":"w","ẍ":"x","áş‹":"x","ᶍ":"x","Ă˝":"y","Ĺ·":"y","Ăż":"y","ẏ":"y","ỵ":"y","ỳ":"y","Ć´":"y","á»·":"y","ỿ":"y","Čł":"y","áş™":"y","ÉŹ":"y","ỹ":"y","Ĺş":"z","Ĺľ":"z","áş‘":"z","Ę‘":"z","ⱬ":"z","ĹĽ":"z","áş“":"z","ČĄ":"z","áş•":"z","ᵶ":"z","ᶎ":"z","Ę":"z","ƶ":"z","É€":"z","ff":"ff","ď¬":"ffi","ffl":"ffl","ď¬":"fi","fl":"fl","Äł":"ij","Ĺ“":"oe","st":"st","â‚":"a","â‚‘":"e","ᵢ":"i","ⱼ":"j","â‚’":"o","ᵣ":"r","ᵤ":"u","ᵥ":"v","â‚“":"x"}; +String.prototype.latinise=function(){return this.replace(/[^A-Za-z0-9\[\] ]/g,function(a){return Latinise.latin_map[a]||a})}; +String.prototype.latinize=String.prototype.latinise; +String.prototype.isLatin=function(){return this==this.latinise()} + +module.exports = function(tag) { + if(tag == undefined) return undefined; + return tag.toLowerCase().latinise().replace(/ /g,"-");; +} -- GitLab