transit-im
Version:
express-like framework for AIM bots creation (ICQ as well)
49 lines (45 loc) • 1.35 kB
JavaScript
// Generated by CoffeeScript 1.6.3
(function() {
var parser;
parser = require('./parser');
module.exports = function(parserObject) {
var parsedCache, prepareCache;
if (parserObject == null) {
parserObject = parser;
}
if (parserObject.user) {
throw "You forgot to call constructor of commandParser middleware";
}
parsedCache = null;
prepareCache = function(handlers) {
var _this = this;
parsedCache = {};
return handlers.filter(function(h) {
return h.pattern;
}).forEach(function(h) {
var parsed;
parsed = parser.parsePattern(h.pattern, h.handler);
return parsedCache[parsed.cmd] = parsed;
});
};
return {
install: function(transit) {
transit.extendRequest("attrs");
return function(req, res, next) {
var args, cb, parsedData, _ref;
if (!req.data) {
return next();
}
prepareCache(req.handlers);
parsedData = parser.parseCommand(req.data);
if (parsedCache[parsedData.cmd]) {
_ref = parsedCache[parsedData.cmd].collectArgs(parsedData.args), cb = _ref.cb, args = _ref.args;
req.attr("handler", cb);
req.attr("attrs", args);
}
return next();
};
}
};
};
}).call(this);