JSFiddle - React, Tailwind, and code Playground

by dru_zod

JavaScript

var QueryParser = (function () {
        var getEnumerator = function (text) {
                var i = 0;
                
                return {
                    next: function () {
                        if (i >= text.length) {
                            return null;
                        }
                        i++;
                        return text[i - 1];
                    }
                };
            },
            
            readValueInBrackets = function (enumerator) {
                var word = [], brackets = 1, c;
                
                c = enumerator.next();
                
                while (c !== null) {            
                    if (c === ')') {
                        brackets--;
                        if (brackets <= 0) {
                            return word.join('');
                        }
                    }
                    else if (c === '(') {
                        brackets++;
                    }
                    
                    word.push(c);            
                    c = enumerator.next();
                }
                
                return word.join('');
            },
                    
            readValue = function (enumerator) {
                var word = [], c;
                
                c = enumerator.next();
                
                if (c === '(') {
                    return readValueInBrackets(enumerator);
                }
                
                while (c !== null && !(/\s/.test(c))) {            
                    word.push(c);
                    c = enumerator.next();
                }
                
                return word.join('');
            },
            
            QueryParser = function () {};
    
        QueryParser.prototype = {
            parse: function (query, fields) {
                var i, word = [], field,
                    words = [], fieldValues = {}, 
                    enumerator =...