all files / vtree/ clearString.js

96.97% Statements 32/33
92.86% Branches 13/14
100% Functions 4/4
96.97% Lines 32/33
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52          356× 356× 356×   353× 353×   235× 235× 80×   235×     235×     235× 235× 3343× 3343× 2830× 43× 43× 2787× 37× 37×     513× 80× 80×       235×     235×  
/* 
 * 将要检测的字符串的字符串替换成??123这样的格式
 */
export var stringNum = 0
export var stringPool = {
    map: {}
}
export var rfill = /\?\?\d+/g
export function dig(a) {
    var key = '??' + stringNum++
        stringPool.map[key] = a
    return key + ' '
}
export function fill(a) {
    var val = stringPool.map[a]
    return val
}
export function clearString(str) {
    var array = readString(str)
    for (var i = 0, n = array.length; i < n; i++) {
        str = str.replace(array[i], dig)
    }
    return str
}
//https://github.com/RubyLouvre/avalon/issues/1944
function readString(str, i, ret) {
    var end = false,
        s = 0,
        i = i || 0
    ret = ret || [];
    for (var n = str.length; i < n; i++) {
        var c = str.charAt(i);
        if (!end) {
            if (c === "'") {
                end = "'";
                s = i;
            } else if (c === '"') {
                end = '"';
                s = i;
            }
        } else {
            if (c === end) {
                ret.push(str.slice(s, i + 1));
                end = false;
            }
        }
    }
    Iif (end !== false) {
        return readString(str, s + 1, ret)
    }
    return ret;
}