init repo
This commit is contained in:
160
NodeJsProjects/SpellChecker/nodehun/lib/index.js
Normal file
160
NodeJsProjects/SpellChecker/nodehun/lib/index.js
Normal file
@@ -0,0 +1,160 @@
|
||||
// Module variables
|
||||
var nativeNodeHun = require('./../src/build/Release/nodehun'),
|
||||
os = require('os'),
|
||||
fs = require('fs'),
|
||||
path = require('path'),
|
||||
dictionariesPath = (function(){
|
||||
var dir = __dirname.split(path.sep);
|
||||
dir.pop();
|
||||
dir.push('dictionaries');
|
||||
return dir.join(path.sep) + path.sep;
|
||||
}()),
|
||||
nativeKeys = Object.keys(nativeNodeHun),
|
||||
i = nativeKeys.length,
|
||||
privateRe = /^_/,
|
||||
dictionaries = [],
|
||||
key;
|
||||
|
||||
// Initializations that need to take place
|
||||
nativeNodeHun._setDictionariesPath(dictionariesPath);
|
||||
|
||||
// Set all public methods to be exposed
|
||||
while(i--){
|
||||
key = nativeKeys[i];
|
||||
if(!privateRe.test(key))
|
||||
exports[key] = nativeNodeHun[key];
|
||||
}
|
||||
/*--exports--
|
||||
name:addDictionaryPerm
|
||||
description: adds a new dictionary to the dictionaries path.
|
||||
The last two parameters are optional. The third parameter
|
||||
specifies another dictionary on which to base this new
|
||||
dictionary on. The fourth parameter, when false, which is
|
||||
default, will copy the affixes and words into the new dictionary
|
||||
folder; when true, only the affixes will be copied.
|
||||
@param{string}
|
||||
@param{function}
|
||||
@param{string=}
|
||||
@param{bool=}
|
||||
*/
|
||||
exports.addDictionaryPerm = function(dictionary,callback,base,notDict){
|
||||
var dictPath = dictionariesPath + dictionary,
|
||||
affPath = dictPath + path.sep + dictionary + '.aff',
|
||||
dicPath = dictPath + path.sep + dictionary + '.dic',
|
||||
oneDone = false,
|
||||
error = false,
|
||||
baseAff,baseDic;
|
||||
// Make the dictionary directory
|
||||
fs.mkdir(dictPath,function(err){
|
||||
// If the directory already exists, error out.
|
||||
if(err){
|
||||
callback(err,false);
|
||||
}
|
||||
else{
|
||||
//If a base dictionary was indicated let's read it
|
||||
if(typeof base === "string"){
|
||||
baseAff = dictionariesPath + base + path.sep + base + '.aff';
|
||||
fs.readFile(baseAff,function(err,abuf){
|
||||
if(err){
|
||||
error = true;
|
||||
callback(err,false);
|
||||
}
|
||||
else{
|
||||
fs.open(affPath,'w',function(err,fd){
|
||||
if(err && !error){
|
||||
error = true
|
||||
callback(err,false);
|
||||
}
|
||||
else if(!error){
|
||||
fs.write(fd,abuf,0,abuf.length,null,function(err,written){
|
||||
if(!error){
|
||||
if(err){
|
||||
callback(err,false);
|
||||
error = true;
|
||||
}
|
||||
else{
|
||||
if(oneDone) callback(null,true);
|
||||
oneDone = true;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
fs.open(affPath,'w',function(err,fd){
|
||||
if(err && !error){
|
||||
callback(err,false);
|
||||
}
|
||||
else if(!error){
|
||||
fs.write(fd,new Buffer('0\n'),0,2,null,function(err,written){
|
||||
if(!error){
|
||||
if(err){
|
||||
callback(err,false);
|
||||
error = true;
|
||||
}
|
||||
else{
|
||||
if(oneDone) callback(null,true);
|
||||
oneDone = true;
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
if(typeof base === "string" && !notDict){
|
||||
baseDic = dictionariesPath + base + path.sep + base + '.dic';
|
||||
fs.readFile(baseDic,function(err,abuf){
|
||||
if(err && !error){
|
||||
error = true;
|
||||
callback(err);
|
||||
}
|
||||
else if(!error){
|
||||
fs.open(dicPath,'w',function(err,fd){
|
||||
if(err && !error){
|
||||
callback(err,false);
|
||||
}
|
||||
else{
|
||||
fs.write(fd,abuf,0,abuf.length,null,function(err,written){
|
||||
if(!error){
|
||||
if(err){
|
||||
callback(err,false);
|
||||
error = true;
|
||||
}
|
||||
else{
|
||||
if(oneDone) callback(null,true);
|
||||
oneDone = true;
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
fs.open(dicPath,'w',function(err,fd){
|
||||
if(err && !error){
|
||||
callback(err,false);
|
||||
}
|
||||
else if(!error){
|
||||
fs.write(fd,new Buffer('0\n'),0,2,null,function(err,written){
|
||||
if(!error){
|
||||
if(err){
|
||||
callback(err,false);
|
||||
error = true;
|
||||
}
|
||||
else{
|
||||
if(oneDone) callback(null,true);
|
||||
oneDone = true;
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user