UNPKG

swordjs

Version:

swordjs - access modules from crosswire.org/sword in JS

45 lines (40 loc) 1.14 kB
var frak = require("./js/frak.min.js"); var fs = require("fs"); //console.log(process.argv); var arg; if (process.argv[2] === "<") { // Not base64-encoded when written to a file arg = fs.readFileSync("./temp.txt").toString('utf8'); } else { arg = new Buffer(process.argv[2], 'base64').toString('utf8' ); } var strings = JSON.parse(arg); var loop_count = 1; var out = []; while (strings.length > 0) { var pattern = frak.frak.pattern(strings, {"exact?": true}) out.push(pattern.toString()); var re = new RegExp(pattern); var ok_count = 0; redos = []; var max_length = 0; for (i = 0, max = strings.length; i < max; i++) { var ok = re.test(strings[i]); //console.log(ok + "\t", strings[i]); if (ok === true) { if (strings[i].length > max_length) { max_length = strings[i].length; } ok_count++; } else { redos.push(strings[i]); } } //console.log(loop_count, ok_count, "/", max, max_length); loop_count++; strings = redos; } console.log(JSON.stringify({"patterns": out}).replace(/([\x80-\uffff])/g, function(matches, $1) { return "\\u" + ("0000" + $1.charCodeAt(0).toString(16)).substr(-4); }));