postal.js/lib/node/classic-resolver.js

33 lines
889 B
JavaScript
Raw Normal View History

var classicBindingsResolver = {
cache : { },
compare : function ( binding, topic ) {
if ( this.cache[topic] && this.cache[topic][binding] ) {
2012-03-22 05:34:53 +00:00
return true;
}
// binding.replace(/\./g,"\\.") // escape actual periods
// .replace(/\*/g, ".*") // asterisks match any value
// .replace(/#/g, "[A-Z,a-z,0-9]*"); // hash matches any alpha-numeric 'word'
var rgx = new RegExp( "^" + binding.replace( /\./g, "\\." ).replace( /\*/g, ".*" ).replace( /#/g, "[A-Z,a-z,0-9]*" ) + "$" ),
result = rgx.test( topic );
if ( result ) {
if ( !this.cache[topic] ) {
2012-03-22 05:34:53 +00:00
this.cache[topic] = {};
}
this.cache[topic][binding] = true;
}
return result;
2012-04-20 05:53:46 +00:00
},
reset : function () {
2012-04-20 05:53:46 +00:00
this.cache = {};
2012-03-22 05:34:53 +00:00
}
2011-09-10 13:43:19 +00:00
};
module.exports = {
configure: function(postal) {
postal.configuration.resolver = classicBindingsResolver;
return postal;
}
};