<commit_before>/* MIT (c) <NAME> */
(function($) {
    $.fn.qdemo = function(title, pluginName, inputCb) {
        // http://javascript.crockford.com/remedial.html
        function typeOf(value) {
            var s = typeof value;

            if (s === 'object') {
                if (value) {
                    if (value instanceof Array) {
                        s = 'array';
                    }
                } else {
                    s = 'null';
                }
            }

            return s;
        }

        function trim(str) {
            // http://blog.stevenlevithan.com/archives/faster-trim-javascript
            var str = str.replace(/^\s\s*/, '');
            var ws = /\s/;
            var i = str.length;

            while (ws.test(str.charAt(--i)));

            return str.slice(0, i + 1);
        }

        function camelcase(str) {
            var s = trim(str);

            return ( /\S[A-Z]/.test( s ) ) ?
                s.replace( /(.)([A-Z])/g, function(t,a,b) { return a + ' ' + b.toLowerCase(); } ) :
                s.replace( /( )([a-z])/g, function(t,a,b) { return b.toUpperCase(); } );
        };

        function capitalize(str) {
            return str.charAt(0).toUpperCase() + str.slice(1);
        };

        function isInt(value) {
            return !isNaN(parseInt(value));
        }

        function constructUI(options) {
            function textInput(name, id, value) {
                return input(name, id, value, 'text');
            }

            function checkboxInput(name, id, value) {
                return input(name, id, value, 'checkbox');
            }

            function input(name, id, value, type) {
                if (id == undefined) {
                    return '<input type="' + type + '" name="' + name +
                        '" value="' + value + '"></input>';
                }

                return '<label for="' + id + '">' + name + ': </label>' +
                    '<input type="' + type + '" id="' + id +
                    '" name="' + name + '"' +
                    '" value="' + value + '"></input>';
            }

            function legend(title) {
                return '<legend>' + title + '</legend>';
            }

            function format(str) {
                return capitalize(camelcase(str));
            }

            function _recursion(options, title) {
                var $ret = $('<fieldset id="' + title + '">');

                $ret.append(legend(format(title)));

                for (var optionName in options) {
                    var optionValue = options[optionName];

                    var types = {
                        "string": function() {
                            $ret.append(textInput(format(optionName),
                                optionName, optionValue));
                        },
                        "number": function() {this.string()},
                        "boolean": function() {
                            $ret.append(checkboxInput(format(optionName),
                                optionName, optionValue));

                            $ret.find('#' + optionName).attr('checked',
                                optionValue);
                        },
                        "array": function() {
                            var $fieldset = $('<fieldset id="' +
                                optionName + '">');

                            $fieldset.append(legend(format(optionName) +
                                textInput('arrayAmount', null,
                                optionValue.length)));

                            for (var i = 0; i < optionValue.length; i++) {
                                var optionItem = optionValue[i];
                                var itemName = optionName + '[]';

                                $fieldset.append(textInput(
                                    format(itemName), null, optionItem));
                            }

                            $ret.append($fieldset);
                        },
                        "object": function() {
                            var uiStructure = _recursion(optionValue,
                                optionName);

                            $ret.append(uiStructure);
                        }
                    }[typeOf(optionValue)]();
                }

                return $ret;
            }

            var $ret = _recursion(options, 'pluginOptions');
            $ret.prepend(textInput(format('elementType'), 'elementType',
                'div'));

            return $ret;
        }

        function getSize(ob) {<commit_msg>Add support for null values<commit_after>/* MIT (c) <NAME> */
(function($) {
    $.fn.qdemo = function(title, pluginName, inputCb) {
        // http://javascript.crockford.com/remedial.html
        function typeOf(value) {
            var s = typeof value;

            if (s === 'object') {
                if (value) {
                    if (value instanceof Array) {
                        s = 'array';
                    }
                } else {
                    s = 'null';
                }
            }

            return s;
        }

        function trim(str) {
            // http://blog.stevenlevithan.com/archives/faster-trim-javascript
            var str = str.replace(/^\s\s*/, '');
            var ws = /\s/;
            var i = str.length;

            while (ws.test(str.charAt(--i)));

            return str.slice(0, i + 1);
        }

        function camelcase(str) {
            var s = trim(str);

            return ( /\S[A-Z]/.test( s ) ) ?
                s.replace( /(.)([A-Z])/g, function(t,a,b) { return a + ' ' + b.toLowerCase(); } ) :
                s.replace( /( )([a-z])/g, function(t,a,b) { return b.toUpperCase(); } );
        };

        function capitalize(str) {
            return str.charAt(0).toUpperCase() + str.slice(1);
        };

        function isInt(value) {
            return !isNaN(parseInt(value));
        }

        function constructUI(options) {
            function textInput(name, id, value) {
                return input(name, id, value, 'text');
            }

            function checkboxInput(name, id, value) {
                return input(name, id, value, 'checkbox');
            }

            function input(name, id, value, type) {
                if (id == undefined) {
                    return '<input type="' + type + '" name="' + name +
                        '" value="' + value + '"></input>';
                }

                return '<label for="' + id + '">' + name + ': </label>' +
                    '<input type="' + type + '" id="' + id +
                    '" name="' + name + '"' +
                    '" value="' + value + '"></input>';
            }

            function legend(title) {
                return '<legend>' + title + '</legend>';
            }

            function format(str) {
                return capitalize(camelcase(str));
            }

            function _recursion(options, title) {
                var $ret = $('<fieldset id="' + title + '">');

                $ret.append(legend(format(title)));

                for (var optionName in options) {
                    var optionValue = options[optionName];

                    var types = {
                        "string": function() {
                            $ret.append(textInput(format(optionName),
                                optionName, optionValue));
                        },
                        "number": function() {this.string()},
                        "boolean": function() {
                            $ret.append(checkboxInput(format(optionName),
                                optionName, optionValue));

                            $ret.find('#' + optionName).attr('checked',
                                optionValue);
                        },
                        "array": function() {
                            var $fieldset = $('<fieldset id="' +
                                optionName + '">');

                            $fieldset.append(legend(format(optionName) +
                                textInput('arrayAmount', null,
                                optionValue.length)));

                            for (var i = 0; i < optionValue.length; i++) {
                                var optionItem = optionValue[i];
                                var itemName = optionName + '[]';

                                $fieldset.append(textInput(
                                    format(itemName), null, optionItem));
                            }

                            $ret.append($fieldset);
                        },
                        "object": function() {
                            var uiStructure = _recursion(optionValue,
                                optionName);

                            $ret.append(uiStructure);
                        },
                        "null": function() {}
                    }[typeOf(optionValue)]();
                }

                return $ret;
            }

            var $ret = _recursion(options, 'pluginOptions');
            $ret.prepend(textInput(format('elementType'), 'elementType',
                'div'));

            return $ret;
        }

        function getSize(ob) {
{'fraction_non_alphanumeric': 0.13440342429106475, 'fraction_numerical': 0.001070090957731407, 'mean_word_length': 1.0090283748925193, 'pattern_counts': {'":': 11, '<': 27, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1156746', 'n_tokens_mistral': 2418, 'n_tokens_neox': 2212, 'n_words': 458}