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>");