pico-engine-core
Advanced tools
Comparing version 0.14.1 to 0.14.2
{ | ||
"name": "pico-engine-core", | ||
"version": "0.14.1", | ||
"version": "0.14.2", | ||
"description": "The core javascript api for the pico-engine. (no http, logging, process management etc...)", | ||
@@ -5,0 +5,0 @@ "main": "src/index.js", |
@@ -56,6 +56,6 @@ var _ = require("lodash"); | ||
if(did_fire){ | ||
ctx.emitDebug("fired"); | ||
ctx.emit("debug", "fired"); | ||
getPostFn("fired")(ctx); | ||
}else{ | ||
ctx.emitDebug("not fired"); | ||
ctx.emit("debug", "not fired"); | ||
getPostFn("notfired")(ctx); | ||
@@ -62,0 +62,0 @@ } |
@@ -18,3 +18,5 @@ var _ = require("lodash"); | ||
if(!_.has(ctx, "emit")){ | ||
ctx.emit = _.noop;//stdlib expects an "emit" function to be available | ||
ctx.emit = function(){ | ||
console.error("WARNING ctx.emit(...) was not defined!"); | ||
};//stdlib expects an "emit" function to be available | ||
} | ||
@@ -171,3 +173,3 @@ ctx.callKRLstdlib = function(fn_name){ | ||
var ctx_orig = mkCTX({ | ||
var ctx = mkCTX({ | ||
emit: function(type, val, message){//for stdlib | ||
@@ -184,17 +186,10 @@ //TODO think this through more | ||
var rules = selectRulesToEvalFuture(ctx_orig, salience_graph, rulesets).wait(); | ||
var rules = selectRulesToEvalFuture(ctx, salience_graph, rulesets).wait(); | ||
var responses = _.map(rules, function(rule){ | ||
var rule_debug_info = _.assign({}, debug_info, { | ||
rid: rule.rid, | ||
rule_name: rule.name | ||
}); | ||
var ctx = _.assign({}, ctx_orig, { | ||
rid: rule.rid, | ||
rule: rule, | ||
scope: rule.scope, | ||
emitDebug: function(msg){ | ||
emitter.emit("debug", "event", rule_debug_info, msg); | ||
} | ||
}); | ||
ctx.emit("debug", "rule selected: " + rule.rid + " -> " + rule.name); | ||
ctx.rid = rule.rid; | ||
ctx.rule = rule; | ||
ctx.scope = rule.scope; | ||
if(_.has(rulesets, rule.rid)){ | ||
@@ -204,4 +199,2 @@ ctx.modules_used = rulesets[rule.rid].modules_used; | ||
ctx.emitDebug("rule selected"); | ||
return evalRuleInFiber(rule, ctx); | ||
@@ -264,2 +257,6 @@ }); | ||
pico: pico, | ||
emit: function(type, val, message){//for stdlib | ||
//TODO think this through more | ||
emitter.emit(type, {rid: rs.rid}, val, message); | ||
}, | ||
engine: engine, | ||
@@ -266,0 +263,0 @@ modules: modules, |
@@ -602,1 +602,36 @@ var _ = require("lodash"); | ||
}); | ||
test("PicoEngine - io.picolabs.expressions ruleset", function(t){ | ||
var pe = mkTestPicoEngine(); | ||
var query = mkQueryTask(pe, "id1", "io.picolabs.expressions"); | ||
testOutputs(t, [ | ||
λ.curry(pe.db.newPico, {}), | ||
λ.curry(pe.db.newChannel, {pico_id: "id0", name: "one", type: "t"}), | ||
λ.curry(pe.db.addRuleset, {pico_id: "id0", rid: "io.picolabs.expressions"}), | ||
[ | ||
query("obj"), | ||
{ | ||
a: "changed 1", | ||
b: {c: [2, 3, 4, {d: {e: "changed 5"}}, 6, 7]} | ||
} | ||
], | ||
[ | ||
query("path1"), | ||
{e: "changed 5"} | ||
], | ||
[ | ||
query("path2"), | ||
7 | ||
], | ||
[ | ||
query("index1"), | ||
"changed 1" | ||
], | ||
[ | ||
query("index2"), | ||
3 | ||
] | ||
], t.end); | ||
}); |
44950
1491