<commit_before>// ----------------------------------------------------------------------------------------------------------------- //
// no
// ----------------------------------------------------------------------------------------------------------------- //

var no = {};

// ----------------------------------------------------------------------------------------------------------------- //

no.inherits = function(child, parent) {
    var F = function() {};
    F.prototype = parent.prototype;
    child.prototype = new F();
    child.prototype.constructor = child;
};

// ----------------------------------------------------------------------------------------------------------------- //

/**
    @param {!Object} dest
    @param {...!Object} srcs
    @return {!Object}
*/
no.extend = function(dest) {
    var srcs = [].slice.call(arguments, 1);

    for (var i = 0, l = srcs.length; i < l; i++) {
        var src = srcs[i];
        for (var key in src) {
            dest[key] = src[key];
        }
    }

    return dest;
};

// ----------------------------------------------------------------------------------------------------------------- //

/**
    Do not clone functions, only data.
    @param {!Object} dest
    @param {...!Object} srcs
    @return {!Object}
*/
no.extendRecursive = function(dest) {
    var srcs = [].slice.call(arguments, 1);

    for (var i = 0, l = srcs.length; i < l; i++) {
        var src = srcs[i];
        for (var key in src) {
            var value = src[key];
            if (no.isArray(value)) {
                var ar = [];
                for (var j = 0; j < value.length; j++) {
                    var item = value[j];
                    if (typeof item === "object") {
                        ar[j] = no.extendRecursive({}, item);
                    } else {
                        ar[j] = item;
                    }
                }
                dest[key] = ar;
            }
            else if (typeof value === "object") {
                dest[key] = {};
                no.extendRecursive(dest[key], value);
            } else {
                dest[key] = value;
            }
        }
    }

    return dest;
};

// ----------------------------------------------------------------------------------------------------------------- //

no.isArray = Array.isArray; // TODO old browsers version

/**
    Пустая функция. No operation.
*/
no.pe = function() {};

// ----------------------------------------------------------------------------------------------------------------- //

/**
    @param {string} className
    @param {Element} context
    @return {Array.<Element>}
*/<commit_msg>Luke, use single quotes, spaces and instanceof Array<commit_after>// ----------------------------------------------------------------------------------------------------------------- //
// no
// ----------------------------------------------------------------------------------------------------------------- //

var no = {};

// ----------------------------------------------------------------------------------------------------------------- //

no.inherits = function(child, parent) {
    var F = function() {};
    F.prototype = parent.prototype;
    child.prototype = new F();
    child.prototype.constructor = child;
};

// ----------------------------------------------------------------------------------------------------------------- //

/**
    @param {!Object} dest
    @param {...!Object} srcs
    @return {!Object}
*/
no.extend = function(dest) {
    var srcs = [].slice.call(arguments, 1);

    for (var i = 0, l = srcs.length; i < l; i++) {
        var src = srcs[i];
        for (var key in src) {
            dest[key] = src[key];
        }
    }

    return dest;
};

// ----------------------------------------------------------------------------------------------------------------- //

/**
    Do not clone functions, only data.
    @param {!Object} dest
    @param {!Object} src
    @return {!Object}
*/
no.extendRecursive = function(dest, src) {
    for (var key in src) {
        var value = src[key];

        if (value instanceof Array) {
            var ar = dest[key] = [];
            for (var j = 0, m = value.length; j < m; j++) {
                var item = value[j];
                ar[j] = (typeof item === 'object') ? no.extendRecursive( {}, item ) : item;
            }

        } else if (typeof value === 'object') {
            dest[key] = no.extendRecursive( {}, value );

        } else {
            dest[key] = value;

        }
    }

    return dest;
};

// ----------------------------------------------------------------------------------------------------------------- //

/**
    Пустая функция. No operation.
*/
no.pe = function() {};

// ----------------------------------------------------------------------------------------------------------------- //

/**
    @param {string} className
    @param {Element} context
    @return {Array.<Element>}
*/
{'fraction_non_alphanumeric': 0.4365287588294652, 'fraction_numerical': 0.0016145307769929364, 'mean_word_length': 0.689161554192229, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5651863', 'n_tokens_mistral': 1134, 'n_tokens_neox': 1106, 'n_words': 288}