JSFiddle - React, Tailwind, and code Playground

by XTREME104

JavaScript

/*
    addRule (rule:String):void
    addRuleAt (rule:String, index:uint):void
    addRules (rulesarray:String[]):void
    addRulesAt (rulesarray:String[], index:uint):void
    addRegexRules (rule:String):void
    addRegexRuleAt (rule:String, index:uint):void
    addRegexRules (rulesarray:String[]):void
    addRegexRulesAt (rule:String[], index:uint):void
*/

var rules = [];
var regex = "";
    
function addRegexRule (rule) {
    rules.push(rule);
}

function addRegexRuleAt (rule, index) {
    rules.splice(index, 0, rule);
}
    
function addRegexRules (rulesarray) {
    rules = rules.concat(rulesarray);
}

function addRegexRulesAt (rulesarray, index) {
    for (var i = 0; i < rulesarray.length; i++) {
        addRegexRuleAt(rulesarray[i], index + i);
    }
}
    
function addRule (rule) {
    addRegexRule("\\" + rule);
}

function addRuleAt (rule, index) {
    addRegexRuleAt("\\" + rule, index);
}
    
function addRules (rulesarray, index) {
    for (var i = 0; i < rulesarray.length; i++) {
        addRule(rulesarray[i]);
    }
}

function addRulesAt (rulesarray, index) {
    for (var i = 0; i < rulesarray.length; i++) {
        addRuleAt(rulesarray[i], index + i);
    }
}

function tokenize (input) {
    var lines = input.replace(/\/\/(.*)\n/g, "").replace(/\/\*(.*)\*\//g, "").split(/[;\{\}]/);
    var result = [];
    
    var regexp = new RegExp(rules.join("|"), "g");
    
    for (var i = 0; i < lines.length; i++) {
        var match = lines[i].match(regexp);
        if (match != null) {
            result = result.concat(match);
            lines[i] = lines[i].replace(regexp, "");
        }
    }
    
    return...