JSFiddle - React, Tailwind, and code Playground

by Aaron Zhang

JavaScript

(function () {

    var Class = (function () {
        'use strict';
        /*
         * find all pairs of parentheses' begin and end position
         * return an object containing all levels of parentheses
         * (this function is unused)
         */
        function findParentheses(str) {
            var results = {};
            var level = -1;
            for (var i = 0; i < str.length; ++i) {
                if (str[i] == '(') {
                    ++level;
                    results[level] = results[level] || [];
                    results[level].push(i);
                } else if (str[i] == ')') {
                    results[level].push({
                        begin: results[level].pop(),
                        end: i
                    });
                    --level;
                }
            }
            return results;
        }
        /*
         * Name of your class should be specified in the constructor
         * e.g. new Class(function MyClass(){});
         */
        var Class = function (constructor) {
            if (!constructor.name) {
                throw 'Please name your class';
            }
            this.constructor = constructor;
            this.staticMethods = {};
            this.publicMethods = {};
            this.privateMethods = {};
        };

        /*
         * Return the first matching parentheses indexes.
         */
        function findParenthesis(str, start) {
            var count = 0;
            var started = false;
            var result = [];
            for (var i = start || 0; i < str.length; ++i) {
                if (str[i] == '(') {
                    ++count;
                    started = true;
                    result.push(i);
                } else if (str[i] == ')') {
                    --count;
                    if (count === 0 && started) {
                        result.push(i);
                        return result;
                    }
                }
            }
   ...