time-to-botec

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

_createCaseFirst.js (811B)


      1 var castSlice = require('./_castSlice'),
      2     hasUnicode = require('./_hasUnicode'),
      3     stringToArray = require('./_stringToArray'),
      4     toString = require('./toString');
      5 
      6 /**
      7  * Creates a function like `_.lowerFirst`.
      8  *
      9  * @private
     10  * @param {string} methodName The name of the `String` case method to use.
     11  * @returns {Function} Returns the new case function.
     12  */
     13 function createCaseFirst(methodName) {
     14   return function(string) {
     15     string = toString(string);
     16 
     17     var strSymbols = hasUnicode(string)
     18       ? stringToArray(string)
     19       : undefined;
     20 
     21     var chr = strSymbols
     22       ? strSymbols[0]
     23       : string.charAt(0);
     24 
     25     var trailing = strSymbols
     26       ? castSlice(strSymbols, 1).join('')
     27       : string.slice(1);
     28 
     29     return chr[methodName]() + trailing;
     30   };
     31 }
     32 
     33 module.exports = createCaseFirst;