all files / fc-er/ util.js

79.25% Statements 42/53
33.33% Branches 6/18
75% Functions 9/12
79.25% Lines 42/53
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101               113× 113×   113× 39×     74× 243× 243×       113×                     1620×                                                                        
Eif (typeof define !== 'function') {
    var define = require('amdefine')(module);
}
 
define(function (require) {
    'use strict';
 
    var canUseDOM = require('./ExecutionEnvironment').canUseDOM;
    var util = {};
 
    var now = +new Date();
    util.guid = function () {
        return 'er' + now++;
    };
 
    util.mix = function (source) {
        for (var i = 1; i < arguments.length; i++) {
            var destination = arguments[i];
 
            if (!destination) {
                continue;
            }
 
            for (var key in destination) {
                Eif (destination.hasOwnProperty(key)) {
                    source[key] = destination[key];
                }
            }
        }
        return source;
    };
 
    var nativeBind = Function.prototype.bind;
    /**
     * 固定函数的`this`变量和若干参数
     *
     * @param {Function} fn 操作的目标函数
     * @param {Mixed} context 函数的`this`变量
     * @param {Mixed...} args 固定的参数
     * @return {Function} 固定了`this`变量和若干参数后的新函数对象
     */
    util.bind = nativeBind ? function (fn) {
        return nativeBind.apply(fn, [].slice.call(arguments, 1));
    } : function (fn, context) {
        var extraArgs = [].slice.call(arguments, 2);
        return function () {
            var args = extraArgs.concat([].slice.call(arguments));
            return fn.apply(context, args);
        };
    };
 
    util.noop = function () {};
 
    var dontEnumBug = !{ toString: 1 }.propertyIsEnumerable('toString');
 
    util.inherits = function (type, superType) {
        var Empty = function Empty() {};
        Empty.prototype = superType.prototype;
        var proto = new Empty();
 
        var originalPrototype = type.prototype;
        type.prototype = proto;
 
        for (var key in originalPrototype) {
            proto[key] = originalPrototype[key];
        }
        Iif (dontEnumBug) {
            if (originalPrototype.hasOwnProperty('toString')) {
                proto.toString = originalPrototype.toString;
            }
            if (originalPrototype.hasOwnProperty('valueOf')) {
                proto.valueOf = originalPrototype.valueOf;
            }
        }
        type.prototype.constructor = type;
 
        return type;
    };
 
    util.parseJSON = JSON.parse;
 
    var whitespace = /(^[\s\t\xa0\u3000]+)|([\u3000\xa0\s\t]+$)/g;
    util.trim = function (source) {
        return source.replace(whitespace, '');
    };
 
    util.encodeHTML = function (source) {
        source = source + '';
        return source.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#39;');
    };
 
    util.getElement = function (element) {
        if (canUseDOM && typeof element === 'string') {
            element = document.getElementById(element);
        }
        return element;
    };
 
    return util;
});
//# sourceMappingURL=data:application/json;base64,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LGtCQUFrQixPQUFsQixDQUQ2QjthQUFqRDtTQUpKO0FBUUEsYUFBSyxTQUFMLENBQWUsV0FBZixHQUE2QixJQUE3QixDQW5CaUM7O0FBcUJqQyxlQUFPLElBQVAsQ0FyQmlDO0tBQXJCLENBbkRNOztBQTJFdEIsU0FBSyxTQUFMLEdBQWlCLEtBQUssS0FBTCxDQTNFSzs7QUE2RXRCLFFBQU0sYUFBYSw0Q0FBYixDQTdFZ0I7QUE4RXRCLFNBQUssSUFBTCxHQUFZLFVBQUMsTUFBRDtlQUFZLE9BQU8sT0FBUCxDQUFlLFVBQWYsRUFBMkIsRUFBM0I7S0FBWixDQTlFVTs7QUFnRnRCLFNBQUssVUFBTCxHQUFrQixVQUFDLE1BQUQsRUFBWTtBQUMxQixpQkFBUyxTQUFTLEVBQVQsQ0FEaUI7QUFFMUIsZUFBTyxPQUNGLE9BREUsQ0FDTSxJQUROLEVBQ1ksT0FEWixFQUVGLE9BRkUsQ0FFTSxJQUZOLEVBRVksTUFGWixFQUdGLE9BSEUsQ0FHTSxJQUhOLEVBR1ksTUFIWixFQUlGLE9BSkUsQ0FJTSxJQUpOLEVBSVksUUFKWixFQUtGLE9BTEUsQ0FLTSxJQUxOLEVBS1ksT0FMWixDQUFQLENBRjBCO0tBQVosQ0FoRkk7O0FBMEZ0QixTQUFLLFVBQUwsR0FBa0IsVUFBQyxPQUFELEVBQWE7QUFDM0IsWUFBSSxhQUFhLE9BQU8sT0FBUCxLQUFtQixRQUFuQixFQUE2QjtBQUMxQyxzQkFBVSxTQUFTLGNBQVQsQ0FBd0IsT0FBeEIsQ0FBVixDQUQwQztTQUE5QztBQUdBLGVBQU8sT0FBUCxDQUoyQjtLQUFiLENBMUZJOztBQWlHdEIsV0FBTyxJQUFQLENBakdzQjtDQUFuQixDQUFQIiwiZmlsZSI6InV0aWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpZiAodHlwZW9mIGRlZmluZSAhPT0gJ2Z1bmN0aW9uJykge3ZhciBkZWZpbmUgPSByZXF1aXJlKCdhbWRlZmluZScpKG1vZHVsZSl9XG5cbmRlZmluZShmdW5jdGlvbiAocmVxdWlyZSkge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIGNvbnN0IGNhblVzZURPTSA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKS5jYW5Vc2VET007XG4gICAgY29uc3QgdXRpbCA9IHt9O1xuXG4gICAgbGV0IG5vdyA9ICtuZXcgRGF0ZSgpO1xuICAgIHV0aWwuZ3VpZCA9ICgpID0+IGBlciR7bm93Kyt9YDtcblxuICAgIHV0aWwubWl4ID0gZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBhcmd1bWVudHNbaV07XG5cbiAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGVzdGluYXRpb24pIHtcbiAgICAgICAgICAgICAgICBpZiAoZGVzdGluYXRpb24uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgICAgICBzb3VyY2Vba2V5XSA9IGRlc3RpbmF0aW9uW2tleV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgfTtcblxuICAgIGNvbnN0IG5hdGl2ZUJpbmQgPSBGdW5jdGlvbi5wcm90b3R5cGUuYmluZDtcbiAgICAvKipcbiAgICAgKiDlm7rlrprlh73mlbDnmoRgdGhpc2Dlj5jph4/lkozoi6XlubLlj4LmlbBcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIOaTjeS9nOeahOebruagh+WHveaVsFxuICAgICAqIEBwYXJhbSB7TWl4ZWR9IGNvbnRleHQg5Ye95pWw55qEYHRoaXNg5Y+Y6YePXG4gICAgICogQHBhcmFtIHtNaXhlZC4uLn0gYXJncyDlm7rlrprnmoTlj4LmlbBcbiAgICAgKiBAcmV0dXJuIHtGdW5jdGlvbn0g5Zu65a6a5LqGYHRoaXNg5Y+Y6YeP5ZKM6Iul5bmy5Y+C5pWw5ZCO55qE5paw5Ye95pWw5a+56LGhXG4gICAgICovXG4gICAgdXRpbC5iaW5kID0gbmF0aXZlQmluZCA/XG4gICAgICAgIGZ1bmN0aW9uIChmbikge1xuICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUJpbmQuYXBwbHkoZm4sIFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7XG4gICAgICAgIH0gOlxuICAgICAgICBmdW5jdGlvbiAoZm4sIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4dHJhQXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAyKTtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJncyA9IGV4dHJhQXJncy5jb25jYXQoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZm4uYXBwbHkoY29udGV4dCwgYXJncyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuXG4gICAgdXRpbC5ub29wID0gZnVuY3Rpb24gKCkge307XG5cbiAgICBjb25zdCBkb250RW51bUJ1ZyA9ICEoKHt0b1N0cmluZzogMX0pLnByb3BlcnR5SXNFbnVtZXJhYmxlKCd0b1N0cmluZycpKTtcblxuICAgIHV0aWwuaW5oZXJpdHMgPSAodHlwZSwgc3VwZXJUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IEVtcHR5ID0gZnVuY3Rpb24gKCkge307XG4gICAgICAgIEVtcHR5LnByb3RvdHlwZSA9IHN1cGVyVHlwZS5wcm90b3R5cGU7XG4gICAgICAgIGNvbnN0IHByb3RvID0gbmV3IEVtcHR5KCk7XG5cbiAgICAgICAgY29uc3Qgb3JpZ2luYWxQcm90b3R5cGUgPSB0eXBlLnByb3RvdHlwZTtcbiAgICAgICAgdHlwZS5wcm90b3R5cGUgPSBwcm90bztcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBvcmlnaW5hbFByb3RvdHlwZSkge1xuICAgICAgICAgICAgcHJvdG9ba2V5XSA9IG9yaWdpbmFsUHJvdG90eXBlW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvbnRFbnVtQnVnKSB7XG4gICAgICAgICAgICBpZiAob3JpZ2luYWxQcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ3RvU3RyaW5nJykpIHtcbiAgICAgICAgICAgICAgICBwcm90by50b1N0cmluZyA9IG9yaWdpbmFsUHJvdG90eXBlLnRvU3RyaW5nO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG9yaWdpbmFsUHJvdG90eXBlLmhhc093blByb3BlcnR5KCd2YWx1ZU9mJykpIHtcbiAgICAgICAgICAgICAgICBwcm90by52YWx1ZU9mID0gb3JpZ2luYWxQcm90b3R5cGUudmFsdWVPZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0eXBlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHR5cGU7XG5cbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfTtcblxuICAgIHV0aWwucGFyc2VKU09OID0gSlNPTi5wYXJzZTtcblxuICAgIGNvbnN0IHdoaXRlc3BhY2UgPSAvKF5bXFxzXFx0XFx4YTBcXHUzMDAwXSspfChbXFx1MzAwMFxceGEwXFxzXFx0XSskKS9nO1xuICAgIHV0aWwudHJpbSA9IChzb3VyY2UpID0+IHNvdXJjZS5yZXBsYWNlKHdoaXRlc3BhY2UsICcnKTtcblxuICAgIHV0aWwuZW5jb2RlSFRNTCA9IChzb3VyY2UpID0+IHtcbiAgICAgICAgc291cmNlID0gc291cmNlICsgJyc7XG4gICAgICAgIHJldHVybiBzb3VyY2VcbiAgICAgICAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgICAgICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXG4gICAgICAgICAgICAucmVwbGFjZSgvPi9nLCAnJmd0OycpXG4gICAgICAgICAgICAucmVwbGFjZSgvXCIvZywgJyZxdW90OycpXG4gICAgICAgICAgICAucmVwbGFjZSgvJy9nLCAnJiMzOTsnKTtcbiAgICB9O1xuXG4gICAgdXRpbC5nZXRFbGVtZW50ID0gKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGNhblVzZURPTSAmJiB0eXBlb2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9O1xuXG4gICAgcmV0dXJuIHV0aWw7XG59KTtcbiJdfQ==