Code coverage report for src/utils.js

Statements: 100% (30 / 30)      Branches: 87.5% (14 / 16)      Functions: 100% (9 / 9)      Lines: 100% (29 / 29)      Ignored: none     

All files » src/ » utils.js
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  1   1 5 1426 1081 1081 930   151 151 181           1 1 34     1 268 157 1   156     268     1 551     1 160     1 44 44       1 1   1  
"use strict";
var utils = {};
 
['forEach', 'some', 'every', 'filter', 'map'].forEach(function(fnName) {
  utils[fnName] = function(arr, fn, context) {
    if (!arr || typeof arr === 'string') return arr;
    context = context || this;
    if (arr[fnName]) {
      return arr[fnName](fn, context);
    } else {
      var keys = Object.keys(arr);
      return keys[fnName](function(key) {
        return fn.call(context, arr[key], key, arr);
      }, context);
    }
  };
});
 
var number = 0;
utils.guid = function() {
  return number++;
};
 
utils.mixin = function(to, from) {
  utils.forEach(from, function(val, key) {
    if (utils.isArray(val) || utils.isObject(val)) {
      to[key] = utils.mixin(val, to[key] || {});
    } else {
      to[key] = val;
    }
  });
  return to;
};
 
utils.isArray = function(obj) {
  return {}.toString.call(obj) === '[object Array]';
};
 
utils.isObject = function(obj) {
  return {}.toString.call(obj) === '[object Object]';
};
 
utils.indexOf = function(elem, arr) {
  Eif (utils.isArray(arr)) {
    return arr.indexOf(elem);
  }
};
 
utils.keys = Object.keys;
utils.now  = Date.now;
 
module.exports = utils;