UNPKG

decision

Version:

Decision System Based on Event System and Alleyway Grammer

130 lines (103 loc) 3.91 kB
/******************************************************************** * * Decision System Based on Event System and Alleyway Grammer * ********************************************************************/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _this = this; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var _decisionChain = require("./decisionChain"); var _decisionChain2 = _interopRequireDefault(_decisionChain); var _alleyway = require("alleyway"); var _alleyway2 = _interopRequireDefault(_alleyway); var _makeDecisions = require("./makeDecisions"); var _makeDecisions2 = _interopRequireDefault(_makeDecisions); var _marmoset = require("marmoset"); var _marmoset2 = _interopRequireDefault(_marmoset); var makeAction = function makeAction(name, action, marmoset) { return function callee$1$0() { for (var _len = arguments.length, y = Array(_len), _key = 0; _key < _len; _key++) { y[_key] = arguments[_key]; } var res; return regeneratorRuntime.async(function callee$1$0$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: context$2$0.next = 2; return regeneratorRuntime.awrap(action.apply(undefined, y)); case 2: res = context$2$0.sent; // action done marmoset.trigger("system", "actionDone", { name: name, res: res }); return context$2$0.abrupt("return", res); case 5: case "end": return context$2$0.stop(); } }, null, _this); }; }; var getPrintEventData = function getPrintEventData(data) { if (!data || typeof data !== "object") return data; var res = ""; for (var _name in data) { res += _name + ":" + data[_name] + " ; "; } return res; }; exports["default"] = function (opts) { var actionMap = {}; var alleyway = (0, _alleyway2["default"])(actionMap); var marmoset = (0, _marmoset2["default"])({ logEvent: opts && opts.logEvent }); var loadActions = function loadActions(config) { var _loop = function (_name2) { var action = config[_name2]; // wrap action actionMap[_name2] = makeAction(_name2, action, marmoset); // specify actionDone // actionDone>${ name } marmoset.createEventByRoute(function (m) { m().happen("system", "actionDone").inCase(function (e) { return e.data.name === _name2; }).trigger("system", _name2).data(function (e) { return e.data.res; }); }); }; for (var _name2 in config) { _loop(_name2); } // after loading actions alleyway = (0, _alleyway2["default"])(actionMap); }; var loadDecisions = function loadDecisions(decision) { var chain = (0, _decisionChain2["default"])(marmoset, alleyway); var factory = chain.createFactory(); decision(factory); (0, _makeDecisions2["default"])(chain.getDecisions(), marmoset, alleyway); }; var loadEvents = function loadEvents(config) { for (var channel in config) { var paths = config[channel]; for (var i = 0; i < paths.length; i++) { var watch = paths[i]; watch(marmoset, channel); } } }; return { loadEvents: loadEvents, loadActions: loadActions, loadDecisions: loadDecisions, marmoset: marmoset // export event system }; }; module.exports = exports["default"];