mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
...
This commit is contained in:
parent
79c2e6e2da
commit
12d568ccf3
2
gun.js
2
gun.js
@ -823,7 +823,7 @@
|
||||
|
||||
Gun.is = function(gun){ return (gun instanceof Gun) }
|
||||
|
||||
Gun.version = 0.7;
|
||||
Gun.version = 0.8;
|
||||
|
||||
Gun.chain = Gun.prototype;
|
||||
Gun.chain.toJSON = function(){};
|
||||
|
72
lib/radix.js
72
lib/radix.js
@ -1,13 +1,11 @@
|
||||
var fs = require('fs');
|
||||
var Gun = require('gun');
|
||||
var gbm = Gun.obj.map, no = {}, u;
|
||||
|
||||
function Radix(){
|
||||
var radix = {};
|
||||
var tree = radix._ = {};
|
||||
var gbm = Gun.obj.map;
|
||||
radix.add = function(key, val, t){
|
||||
var radix = function(key, val, t){
|
||||
t = t || tree;
|
||||
var i = 0, l = key.length-1, k = key[i], at;
|
||||
var i = 0, l = key.length-1, k = key[i], at, tmp;
|
||||
while(!(at = t[k]) && i < l){
|
||||
k += key[++i];
|
||||
}
|
||||
@ -18,6 +16,7 @@ function Radix(){
|
||||
kk += s[ii++];
|
||||
}
|
||||
if(kk){
|
||||
if(u === val){ return (tmp || (tmp = {}))[s.slice(ii)] = r; }
|
||||
var _ = {};
|
||||
_[s.slice(ii)] = r;
|
||||
_[key.slice(ii)] = {$: val};
|
||||
@ -26,15 +25,21 @@ function Radix(){
|
||||
return true;
|
||||
}
|
||||
})){
|
||||
if(u === val){ return; }
|
||||
(t[k] || (t[k] = {})).$ = val;
|
||||
} else
|
||||
if(u === val){
|
||||
return tmp;
|
||||
}
|
||||
} else
|
||||
if(i == l){
|
||||
if(u === val){ return (u === (tmp = at.$))? at._ : tmp }
|
||||
at.$ = val;
|
||||
} else {
|
||||
return radix.add(key.slice(++i), val, at._);
|
||||
return radix(key.slice(++i), val, at._);
|
||||
}
|
||||
}
|
||||
var tree = radix._ = {};
|
||||
return radix;
|
||||
}
|
||||
|
||||
@ -42,14 +47,16 @@ function Radix(){
|
||||
|
||||
(function(){
|
||||
var radix = Radix();
|
||||
radix.add('user/marknadal', 'asdf');
|
||||
radix.add('user/ambercazzell', 'dafs');
|
||||
radix.add('user/taitforrest', 'sadf');
|
||||
radix.add('user/taitveronika', 'fdsa');
|
||||
radix.add('user/marknadal', 'foo');
|
||||
radix('user/marknadal', 'asdf');
|
||||
radix('user/ambercazzell', 'dafs');
|
||||
radix('user/taitforrest', 'sadf');
|
||||
radix('user/taitveronika', 'fdsa');
|
||||
radix('user/marknadal', 'foo');
|
||||
radix('user/table', 'foo');
|
||||
console.log("__________________");
|
||||
console.log(radix._);
|
||||
fs.writeFileSync('radix-data.json', JSON.stringify(radix._, null, 2));
|
||||
console.log(radix('user/table'));
|
||||
//fs.writeFileSync('radix-data.json', JSON.stringify(radix._, null, 2));
|
||||
}());
|
||||
(function(){return;
|
||||
var radix = Radix();
|
||||
@ -58,9 +65,46 @@ function Radix(){
|
||||
function bench(){
|
||||
if(c > 1000){ return clearInterval(it), console.log(radix._, Object.keys(radix._).length), fs.writeFileSync('radix-data.json', JSON.stringify(radix._, null, 2)); }
|
||||
for(var i = 0; i < l; i++){
|
||||
radix.add(gtr(7), c++);
|
||||
radix(gtr(7), c++);
|
||||
}
|
||||
//if(c % 1000 === 0){ console.log(radix._) }
|
||||
}
|
||||
var it = setInterval(bench, 1);
|
||||
}());
|
||||
}());
|
||||
|
||||
function Radisk(){
|
||||
var radix = Radix();
|
||||
var radisk = function(key, val, cb){
|
||||
if(val instanceof Function){
|
||||
cb = val;
|
||||
val = radix(key);
|
||||
if(u !== val){
|
||||
return cb(null, val);
|
||||
}
|
||||
return console.log("read from disk");
|
||||
}
|
||||
radix(key, val);
|
||||
if(!to){ return flush(to = true) }
|
||||
clearTimeout(to);
|
||||
to = setTimeout(flush, opt.wait)
|
||||
};
|
||||
var opt = {file: 'radix', size: 1024 * 1024 * 2, wait: 10 * 1000, batch: 10 * 1000}, to;
|
||||
|
||||
var flush = function(){
|
||||
|
||||
}
|
||||
var read = function(path){
|
||||
return fs.readFileSync(nodePath.join(dir, path)).toString();
|
||||
}
|
||||
|
||||
var write = function(path, data){
|
||||
return fs.writeFileSync(nodePath.join(dir, path), data);
|
||||
}
|
||||
|
||||
var mk = function(path){
|
||||
path = nodePath.join(dir, path);
|
||||
if(fs.existsSync(path)){ return }
|
||||
fs.mkdirSync(path);
|
||||
}
|
||||
return radisk;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user