time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

_baseIteratee.js (895B)


      1 var baseMatches = require('./_baseMatches'),
      2     baseMatchesProperty = require('./_baseMatchesProperty'),
      3     identity = require('./identity'),
      4     isArray = require('./isArray'),
      5     property = require('./property');
      6 
      7 /**
      8  * The base implementation of `_.iteratee`.
      9  *
     10  * @private
     11  * @param {*} [value=_.identity] The value to convert to an iteratee.
     12  * @returns {Function} Returns the iteratee.
     13  */
     14 function baseIteratee(value) {
     15   // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
     16   // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
     17   if (typeof value == 'function') {
     18     return value;
     19   }
     20   if (value == null) {
     21     return identity;
     22   }
     23   if (typeof value == 'object') {
     24     return isArray(value)
     25       ? baseMatchesProperty(value[0], value[1])
     26       : baseMatches(value);
     27   }
     28   return property(value);
     29 }
     30 
     31 module.exports = baseIteratee;