node-sword

Sword Engine(Crosswire) for NodeJS (C++ Addon)

Node-Sword

Node-Sword is a binding for the Sword API Engine which makes it possible to use it from your Node.js based project.

$ npm install node-sword

Note: currently node-sword only works for Unix based systems

 
var sword = require('node-sword');
 
sword.configure({
 
    //Directory containing mods.conf file or mods.d directory 
    'modules'   : __dirname+'/resources',   /* default: system lookup (See note * below) */
    //Output format 
    'format'    : sword.FORMAT_RTF,                 /* default: sword.FORMAT_PLAIN */
    //Directory containing locale files 
    'locales'   : __dirname+'/resources/locales'    /* default: /usr/share/sword/locales.d */
    
});
 

The "modules" attribute defines the directory containing the mods.conf file or the mods.d folder, not the actual modules location, which can be the same or some another. This last is defined in your mods.conf file or in the mods.d folder containing all configuration files. You may have either all configurations in a single file (mods.conf) or splited into multiple files inside a mods.d folder. Set up an example tree directory as the next one at your root project (same directory where you did run npm install):

  • resources
    • mods.d // Contains the modules configuration files
    • modules // Contains the modules themselves
    • locales // Contains the locale files

As an example, let's download the KJV bible module (find more from here) and after unzip it, you'll have a folder KJV containing two folders: "mods.d" and "modules". Copy/Move the kjv.conf file inside mods.d folder into resources/mods.d/ and then copy the "texts" folder inside modules folder into resources/modules/

(*) If you do not set a "modules" key in the sword.configure, then it looks by default for modules in a configuration file in some of the following directories:

1) /etc/sword.conf
2) /usr/local/etc/sword.conf
3) $HOME/.sword/
4) $HOME/sword/
5) ./
6) $SWORD_PATH

The configuration file must contain valuable information about the location of your modules

In all cases, except for the first and second one, sword engine looks for a file with the name "mods.conf", or the files in the directory "mods.d". For instance, in the third case, it would look for: $HOME/.sword/mods.conf, $HOME/.sword/mods.d/*.conf

More information here

 
var sword = require('node-sword');
 
sword.info('modules', function(modules){
 
    console.log(modules);
    
});
 
sword.info('locales', function(locales){
 
    console.log(locales);
    
});
 
 
var sword       = require('node-sword');
 
try
{
    var bibleKJV       = new sword.module('KJV');
 
    bibleKJV.read('Genesis 1:1', {keys:false}, function(result){
    
        console.log(result);
    });
 
    /*
    bibleKJV.search('God', function(result){
    
        console.log(result);
    });
 
    bibleKJV.read('Genesis 1,2,3', function(result){
    
        console.log(result);
    });
 
    bibleKJV.read('Judges 1:1', {keys:true, locale:"es"}, function(result){
    
        console.log(result);
    });
 
    bibleKJV.read('Ex', function(result){
    
        console.log(result);
    });
    */
    
}
catch(e)
{
    console.log(e);
}
 
 

In order to run the tests, first install dependences and then just run "make test" or "npm test"

$ npm install
$ make test