X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fmkws-handlebars.js;h=a8dc14292b44867f9ca8c5298692a71bc752ff56;hb=e01ba74a96c0523035b7328be28b5dda2755f97a;hp=6e93578a6b026f75ff8943093a163b28d9aabd48;hpb=d81d10eb466240b6e557379a4e298709a5086bf1;p=mkws-moved-to-github.git diff --git a/src/mkws-handlebars.js b/src/mkws-handlebars.js index 6e93578..a8dc142 100644 --- a/src/mkws-handlebars.js +++ b/src/mkws-handlebars.js @@ -5,11 +5,37 @@ Handlebars.registerHelper('mkws-json', function(obj) { }); -Handlebars.registerHelper('mkws-paragraphs', function(obj) { +// This is intended to handle paragraphs from Wikipedia, hence the +// rather hacky code to remove numbered references. +// +Handlebars.registerHelper('mkws-paragraphs', function(obj, nPara, nSent) { var acc = []; - for (var i = 0; i < obj.length; i++) { - acc.push('

', obj[i], '

'); + + // For some reason, Handlebars provides the value + // {"hash":{},"data":{}} for parameters that are not provided. So we + // have to be prepared for actual numbers, explicitly undefined + // values and this dumb magic value. + if (nPara === undefined || nPara.hasOwnProperty('hash') || nPara == 0 || nPara > obj.length) { + nPara = obj.length; + } + if (nSent === undefined || nSent.hasOwnProperty('hash') || nSent == 0) { + nSent = Infinity; } + + for (var i = 0; i < nPara; i++) { + // Remove numbered references such as "[1,3,4]" from text + var text = obj[i].replace(/\[[0-9,]+\]/g, ''); + // Next line from http://stackoverflow.com/questions/18914629/split-string-into-sentences-in-javascript + var sentences = text.replace(/([.?!])\s*(?=[A-Z])/g, "$1|").split("|"); + if (sentences.length > nSent) + sentences.length = nSent; + + acc.push('

', sentences.join(' '), '

'); + nSent -= sentences.length; + if (nSent == 0) + break; + } + return acc.join(''); });