Skip to content
Snippets Groups Projects
Commit 75793d0c authored by Kevin Jahns's avatar Kevin Jahns
Browse files

added memory data store

parent 7ec409e0
Branches
No related tags found
No related merge requests found
// returns a rendom element of o // returns a random element of o
// works on Object, and Array // works on Object, and Array
function getRandom (o) { function getRandom (o) {
if (o instanceof Array) { if (o instanceof Array) {
......
...@@ -169,5 +169,50 @@ var Struct = { ...@@ -169,5 +169,50 @@ var Struct = {
o = yield* Struct.Insert.create.call(this, {}, content, o, or, op); 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);
}
}
} }
}; };
...@@ -8,4 +8,13 @@ class Y { //eslint-disable-line no-unused-vars ...@@ -8,4 +8,13 @@ class Y { //eslint-disable-line no-unused-vars
transact (generator) { transact (generator) {
this.db.requestTransaction(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 ;)");
};
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment