swordjs
Version:
swordjs - access modules from crosswire.org/sword in JS
95 lines (83 loc) • 2.66 kB
JavaScript
;
//Read a modules conf file a return it as Object
function readConf(inConfString) {
var lines = inConfString.split(/[\r\n]+/g),
configData = {},
splittedLine = null;
configData["GlobalOptionFilter"] = [];
configData["Feature"] = [];
lines.forEach(function(line, index) {
splittedLine = line.split(/=(.+)/);
if (splittedLine[0] !== "")
if (splittedLine[0].search(/\[.*\]/) !== -1)
configData["moduleKey"] = splittedLine[0].replace("[", "").replace("]", "");
else
if (splittedLine[0] === "GlobalOptionFilter")
configData[splittedLine[0]].push(splittedLine[1]);
else if (splittedLine[0] === "Feature")
configData[splittedLine[0]].push(splittedLine[1]);
else if (splittedLine[0] === "Versification")
configData[splittedLine[0]] = splittedLine[1].toLowerCase();
else
configData[splittedLine[0]] = splittedLine[1];
});
return configData;
}
function dynamicSort(property) {
return function (obj1,obj2) {
return obj1[property] > obj2[property] ? 1
: obj1[property] < obj2[property] ? -1 : 0;
};
}
function dynamicSortMultiple() {
/*
* save the arguments object as it will be overwritten
* note that arguments object is an array-like object
* consisting of the names of the properties to sort by
*/
var props = arguments;
return function (obj1, obj2) {
var i = 0, result = 0, numberOfProperties = props.length;
/* try getting a different result from 0 (equal)
* as long as we have extra properties to compare
*/
while(result === 0 && i < numberOfProperties) {
result = dynamicSort(props[i])(obj1, obj2);
i++;
}
return result;
};
}
function cleanArray(actual){
var newArray = [];
for(var i = 0; i<actual.length; i++){
if (actual[i]){
newArray.push(actual[i]);
}
}
return newArray;
}
function convertArray(inArray) {
var obj = {};
inArray.forEach(function (item) {
if(item)
obj[item.book] = item.id;
});
return obj;
}
function convertObject(inObject) {
var a = [];
for (var key in inObject) {
a.push(inObject[key]);
}
return a;
}
var tools = {
readConf: readConf,
dynamicSort: dynamicSort,
dynamicSortMultiple: dynamicSortMultiple,
cleanArray: cleanArray,
convertArray: convertArray,
convertObject: convertObject
};
module.exports = tools;