JSFiddle - React, Tailwind, and code Playground
by ifandelse
JavaScript
var amqpBindingsResolver = {
cache : { },
compare : function ( binding, topic ) {
if ( this.cache[topic] && this.cache[topic][binding] ) {
return true;
}
// binding.replace(/\./g,"\\.") // escape actual periods
// .replace(/#/g, ".*") // hashes match any value
// .replace(/\*/g, "[A-Z,a-z,0-9]*"); // asterisks match any alpha-numeric 'word'
var rgx = new RegExp( "^" + binding.replace( /\./g, "\\." )
.replace( /\*/g, "[A-Z,a-z,0-9]*" )
.replace( /#/g, ".*" ) + "$" ),
result = rgx.test( topic );
$('body').append("<div>" + rgx + " | " + topic + "</div>");
if ( result ) {
if ( !this.cache[topic] ) {
this.cache[topic] = {};
}
this.cache[topic][binding] = true;
}
return result;
},
reset : function () {
this.cache = {};
}
};
$('body').append("<div>" + amqpBindingsResolver.compare("Some.Cool.Topic", "Some.Cool.Topic") + "</div>");
$('body').append("<div>" + amqpBindingsResolver.compare("Some.*.Topic", "Some.Cool.Topic") + "</div>");
$('body').append("<div>" + amqpBindingsResolver.compare("Some.#", "Some.Cool.Topic") + "</div>");
$('body').append("<div>" + amqpBindingsResolver.compare("Some.#", "Some.Other.Cool.Topic") + "</div>");
$('body').append("<div>" + amqpBindingsResolver.compare("Some.#.blah", "Some.Cool.Topic") + "</div>");
$('body').append("<div>" + amqpBindingsResolver.compare("Some.#.Topic", "Some.Other.Cool.Topic") + "</div>");