added memory data store
This commit is contained in:
parent
7ec409e09f
commit
75793d0ced
@ -1,4 +1,4 @@
|
||||
// returns a rendom element of o
|
||||
// returns a random element of o
|
||||
// works on Object, and Array
|
||||
function getRandom (o) {
|
||||
if (o instanceof Array) {
|
||||
|
@ -169,5 +169,50 @@ var Struct = {
|
||||
o = yield* Struct.Insert.create.call(this, {}, content, o, or, op);
|
||||
}
|
||||
}
|
||||
},
|
||||
Map: {
|
||||
create: function*( op : Op){
|
||||
op.start = null;
|
||||
op.end = null;
|
||||
op.struct = "Map";
|
||||
return yield* Struct.Operation.create.call(this, op);
|
||||
},
|
||||
requiredOps: function(op, ids){
|
||||
if (op.start != null) {
|
||||
ids.push(op.start);
|
||||
}
|
||||
if (op.end != null){
|
||||
ids.push(op.end);
|
||||
}
|
||||
return ids;
|
||||
},
|
||||
execute: function* () {
|
||||
// nop
|
||||
},
|
||||
ref: function* (op : Op, pos : number) : Insert {
|
||||
var o = op.start;
|
||||
while ( pos !== 0 || o != null) {
|
||||
o = (yield* this.getOperation(o)).right;
|
||||
pos--;
|
||||
}
|
||||
return (o == null) ? null : yield* this.getOperation(o);
|
||||
},
|
||||
map: function* (o : Op, f : Function) : Array<any> {
|
||||
o = o.start;
|
||||
var res = [];
|
||||
while ( o != null) {
|
||||
var operation = yield* this.getOperation(o);
|
||||
res.push(f(operation.content));
|
||||
o = operation.right;
|
||||
}
|
||||
return res;
|
||||
},
|
||||
insert: function* (op, pos : number, contents : Array<any>) {
|
||||
var o = yield* Struct.List.ref.call(this, op, pos);
|
||||
var or = yield* this.getOperation(o.right);
|
||||
for (var content of contents) {
|
||||
o = yield* Struct.Insert.create.call(this, {}, content, o, or, op);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
9
src/y.js
9
src/y.js
@ -8,4 +8,13 @@ class Y { //eslint-disable-line no-unused-vars
|
||||
transact (generator) {
|
||||
this.db.requestTransaction(generator);
|
||||
}
|
||||
destroy () {
|
||||
this.connector.disconnect();
|
||||
this.db.removeDatabase();
|
||||
this.connector = null;
|
||||
this.db = null;
|
||||
this.transact = function(){
|
||||
throw new Error("Remember?, you destroyed this type ;)");
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user