<commit_before>KISSY.add("brix/core/tmpler", function(S, Mustache, Node,UA) {
    var $ = Node.all;
    /**
     * 用以给brick打上id的标记,brick有id则返回
     * @method _stamp
     * @param el
     * @return {string}
     * @private
     */

    function _stamp(el, prefix) {
        prefix = prefix || 'brick_';
        if (!el.attr('id')) {
            el.attr('id', S.guid('brix_' + prefix));
        }
        return el.attr('id');
    }
    /**
     * 判断节点是否已经在dom中
     * @param  {HTMLElement} el 检测节点
     * @return {Boolen}      是否包含 el 节点
     */

    function _inDom(el) {
        return el.parentNode && el.parentNode.nodeType!=11;
    }

    /**
     * 复原替换的模板
     * @param  {string} html 原html
     * @param  {Array} arr  保存数据的数组
     * @return {string}      替换后的html
     */

    function _recovery(html, arr) {
        //去掉attr="",谁可以优化一下这个正则？
        html = html.replace(/((\{{2,3}\#(.+)?\}{2,3})([\s\S]*)?\s*(\{{2,3}~\3\}{2,3}))\=\"\"/g, '$1');

        //对if语句的还原处理
        html = html.replace(/(\{{2,3}[\^#~]?)iftmplbrick\_(\d+)(\}{2,3})/g, function(w, i, j, k) {
            return i + arr[parseInt(j,10)] + k;
        });
        //对href和src语句的还原处理
        html = html.replace(/(href|src)=("|')("|')/ig,"");
        html = html.replace(/(\{{2,3}[\^#~]?)hreftmplbrick\_(\d+)(\}{2,3})/g, function(w, i, j, k) {
            return arr[parseInt(j,10)];
        });
        //将~符号替换回/，完美了。
        html = html.replace(/(\{{2,3})~/g, '$1/');
        return html;
    }

    /**
     * 模板解析器
     * @param {String}  tmpl    模板字符串
     * @param {Boolean} isParse 是否需要对模板进行解析
     */

    function Tmpler(tmpl, isParse) {
        if (tmpl && (isParse !== false)) {
            this.bricks = {};
            this._praseTmpl(tmpl);
        } else {
            this.tmpl = tmpl;
        }
    }

    S.extend(Tmpler, Object, {
        _praseTmpl: function(tmpl) {
            this._buildBricks(tmpl);
        },
        /**
         * 对模板中的brick的解析
         * @param  {String} tmpl 模板字符串
         */
        _buildBricks: function(tmpl) {
            var self = this;
            var node = $(tmpl);
            var tmplNode = null;
            var inDom = _inDom(node[0]); //判断是否已经添加到dom中
            if (!inDom) {
                node.remove();
                //牛逼的正则啊
                var reg = /(\{{2,3}\#(.+)?\}{2,3})\s*([\s\S]*)?\s*((\{{2,3})\/\2(\}{2,3}))/g;
                while (reg.test(tmpl)) {
                    tmpl = tmpl.replace(reg, ' $1$3$5~$2$6 ');
                    //console.log(reg.lastIndex);
                    //不重置位置，我了个去，ie7，8有问题
                    reg.lastIndex = 0;
                }
                //对if语句的处理
                var arr = [];
                tmpl = tmpl.replace(/(\{{2,3}[\^#~])?(if\(.*?\))(\}{2,3})?/ig, function(w, i, j, k, m, n) {
                    var index = S.indexOf(j, arr),
                        name = 'iftmplbrick_';
                    if (index < 0) {
                        name += arr.length;
                        arr.push(j);
                    } else {
                        name += index;
                    }
                    return i + name + k;
                });


                //对href和src的处理
                tmpl = tmpl.replace(/((href|src)=("|')(.*)?("|'))/ig,function(w,i){
                    var index = S.indexOf(i, arr),
                        name = 'hreftmplbrick_';
                    if (index < 0) {
                        name += arr.length;
                        arr.push(i);
                    } else {
                        name += index;
                    }
                    return "{{#"+name+"}}"  ;
                });

                node = $(tmpl);
                if (node.length > 1) { //如果是多个节点，则创建容器节点
                    node = $('<div></div>').append(node);
                }<commit_msg>fixed style bug<commit_after>KISSY.add("brix/core/tmpler", function(S, Mustache, Node,UA) {
    var $ = Node.all;
    /**
     * 用以给brick打上id的标记,brick有id则返回
     * @method _stamp
     * @param el
     * @return {string}
     * @private
     */

    function _stamp(el, prefix) {
        prefix = prefix || 'brick_';
        if (!el.attr('id')) {
            el.attr('id', S.guid('brix_' + prefix));
        }
        return el.attr('id');
    }
    /**
     * 判断节点是否已经在dom中
     * @param  {HTMLElement} el 检测节点
     * @return {Boolen}      是否包含 el 节点
     */

    function _inDom(el) {
        return el.parentNode && el.parentNode.nodeType!=11;
    }

    /**
     * 复原替换的模板
     * @param  {string} html 原html
     * @param  {Array} arr  保存数据的数组
     * @return {string}      替换后的html
     */

    function _recovery(html, arr) {
        //去掉attr=""
        html = html.replace(/(\{{2,3}[\^#~](.+?)\}{2,3})\=\"\"/g, '$1');

        //对if语句的还原处理
        html = html.replace(/(\{{2,3}[\^#~]?)iftmplbrick\_(\d+)(\}{2,3})/g, function(w, i, j, k) {
            return i + arr[parseInt(j,10)] + k;
        });
        //对href和src语句的还原处理
        html = html.replace(/(href|src|style)=("|')("|')/ig,"");
        html = html.replace(/(\{{2,3}[\^#~]?)href\_src\_style\_tmplbrick\_(\d+)(\}{2,3})/g, function(w, i, j, k) {
            return arr[parseInt(j,10)];
        });
        //将~符号替换回/，完美了。
        html = html.replace(/(\{{2,3})~/g, '$1/');
        return html;
    }

    /**
     * 模板解析器
     * @param {String}  tmpl    模板字符串
     * @param {Boolean} isParse 是否需要对模板进行解析
     */

    function Tmpler(tmpl, isParse) {
        if (tmpl && (isParse !== false)) {
            this.bricks = {};
            this._praseTmpl(tmpl);
        } else {
            this.tmpl = tmpl;
        }
    }

    S.extend(Tmpler, Object, {
        _praseTmpl: function(tmpl) {
            this._buildBricks(tmpl);
        },
        /**
         * 对模板中的brick的解析
         * @param  {String} tmpl 模板字符串
         */
        _buildBricks: function(tmpl) {
            var self = this;
            var node = $(tmpl);
            var tmplNode = null;
            var inDom = _inDom(node[0]); //判断是否已经添加到dom中
            if (!inDom) {
                node.remove();
                //牛逼的正则啊
                var reg = /(\{{2,3}\#(.+?)\}{2,3})\s*([\s\S]*)?\s*((\{{2,3})\/\2(\}{2,3}))/g;
                while (reg.test(tmpl)) {
                    tmpl = tmpl.replace(reg, ' $1$3$5~$2$6 ');
                    //console.log(reg.lastIndex);
                    //不重置位置，我了个去，ie7，8有问题
                    reg.lastIndex = 0;
                }
                //对if语句的处理
                var arr = [];
                tmpl = tmpl.replace(/(\{{2,3}[\^#~])?(if\(.*?\))(\}{2,3})?/ig, function(w, i, j, k, m, n) {
                    var index = S.indexOf(j, arr),
                        name = 'iftmplbrick_';
                    if (index < 0) {
                        name += arr.length;
                        arr.push(j);
                    } else {
                        name += index;
                    }
                    return i + name + k;
                });


                //对href、src style的处理
                tmpl = tmpl.replace(/((href|src|style)=("|')(.*?)("|'))/ig,function(w,i){
                    var index = S.indexOf(i, arr),
                        name = 'href_src_style_tmplbrick_';
                    if (index < 0) {
                        name += arr.length;
                        arr.push(i);
                    } else {
                        name += index;
                    }
                    return "{{#"+name+"}}"  ;
                });

                node = $(tmpl);
                if (node.length > 1) { //如果是多个节点，则创建容器节点
                    node = $('<div></div>').append(node);
                }
{'fraction_non_alphanumeric': 0.18769633507853403, 'fraction_numerical': 0.012958115183246074, 'mean_word_length': 1.2077434267552731, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 9, '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': '5032764', 'n_tokens_mistral': 2866, 'n_tokens_neox': 2852, 'n_words': 421}