regexStrEnd +
'$';
try {
return new RegExp(regexStr);
} catch (e) {
throw new Error('can\'t construct regex for path pattern: ' + path);
}
}
function getPathNodeKey(pathNode, interpolated) {
var prop = pathNode.property
, startIndex = interpolated ? 2 : 1;
return pathNode.syntax == 'array'
? prop.slice(startIndex, prop.length - 1)
: prop.slice(startIndex);
}
// TODO allow for multiple messages in a string
function wrapMessengerMethods(methodsNames) {
methodsNames = methodsNames || ['on', 'off'];
var wrappedMethods = _.mapToObject(methodsNames, function(methodName) {
var origMethod = this[methodName];
// replacing message subsribe/unsubscribe/etc. to convert "*" message patterns to regexps
return function(path, subscriber) {
var regexPath = createRegexPath(path);
origMethod.call(this, regexPath, subscriber);
};
}, this);
_.defineProperties(this, wrappedMethods);
}