foop
Version:
interfaces that describe their intentions.
33 lines (32 loc) • 3 kB
JavaScript
/* prettier-ignore */
/**
* @desc camelCase
* @since 0.2.0
* @symb 🐫
*
* @param {string} str string to turn into camelCase
* @return {string} camelCased string
*
* @tutorial https://github.com/substack/camelize/blob/master/test/camel.js
* @tutorial https://github.com/andrewplummer/Sugar/blob/9c018a257a38714b81f7df033b74d236dbf1e861/lib/string.js
* @tutorial http://stackoverflow.com/questions/2970525/converting-any-string-into-camel-case
* @tutorial https://github.com/sindresorhus/camelcase
* @see https://stackoverflow.com/questions/1533131/what-useful-bitwise-operator-code-tricks-should-a-developer-know-about
* @TODO s.charAt(0).toLowerCase() + string.slice(1)
*
* @types deps
* @tests deps/camelCase
*
* @example
*
* camelCase('snake_case')
* //=> 'snakeCase'
*
*/
module.exports = function (str) { return str
// spaces with underscore
.replace(/\s+/g, '_')
// < underscores & dashes until whitespace or end
// > .toUpperCase x & '_'
.replace(/[_.-](\w|$)/g, function (m, x) { return x.toUpperCase(); }); }
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FtZWxDYXNlLmpzIiwic291cmNlcyI6WyJjYW1lbENhc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogcHJldHRpZXItaWdub3JlICovXG4vKipcbiAqIEBkZXNjIGNhbWVsQ2FzZVxuICogQHNpbmNlIDAuMi4wXG4gKiBAc3ltYiDwn5CrXG4gKlxuICogQHBhcmFtICB7c3RyaW5nfSBzdHIgc3RyaW5nIHRvIHR1cm4gaW50byBjYW1lbENhc2VcbiAqIEByZXR1cm4ge3N0cmluZ30gY2FtZWxDYXNlZCBzdHJpbmdcbiAqXG4gKiBAdHV0b3JpYWwgaHR0cHM6Ly9naXRodWIuY29tL3N1YnN0YWNrL2NhbWVsaXplL2Jsb2IvbWFzdGVyL3Rlc3QvY2FtZWwuanNcbiAqIEB0dXRvcmlhbCBodHRwczovL2dpdGh1Yi5jb20vYW5kcmV3cGx1bW1lci9TdWdhci9ibG9iLzljMDE4YTI1N2EzODcxNGI4MWY3ZGYwMzNiNzRkMjM2ZGJmMWU4NjEvbGliL3N0cmluZy5qc1xuICogQHR1dG9yaWFsIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjk3MDUyNS9jb252ZXJ0aW5nLWFueS1zdHJpbmctaW50by1jYW1lbC1jYXNlXG4gKiBAdHV0b3JpYWwgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9jYW1lbGNhc2VcbiAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTUzMzEzMS93aGF0LXVzZWZ1bC1iaXR3aXNlLW9wZXJhdG9yLWNvZGUtdHJpY2tzLXNob3VsZC1hLWRldmVsb3Blci1rbm93LWFib3V0XG4gKiBAVE9ETyBzLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgc3RyaW5nLnNsaWNlKDEpXG4gKlxuICogQHR5cGVzIGRlcHNcbiAqIEB0ZXN0cyBkZXBzL2NhbWVsQ2FzZVxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogIGNhbWVsQ2FzZSgnc25ha2VfY2FzZScpXG4gKiAgLy89PiAnc25ha2VDYXNlJ1xuICpcbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBzdHIgPT5cbiAgc3RyXG4gICAgLy8gc3BhY2VzIHdpdGggdW5kZXJzY29yZVxuICAgIC5yZXBsYWNlKC9cXHMrL2csICdfJylcbiAgICAvLyA8IHVuZGVyc2NvcmVzICYgZGFzaGVzIHVudGlsIHdoaXRlc3BhY2Ugb3IgZW5kXG4gICAgLy8gPiAudG9VcHBlckNhc2UgeCAmICdfJ1xuICAgIC5yZXBsYWNlKC9bXy4tXShcXHd8JCkvZywgKG0sIHgpID0+IHgudG9VcHBlckNhc2UoKSlcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXlCQSxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQUEsR0FBRyxDQUFBLENBQUMsQUFDbkIsU0FBQSxHQUFHOztLQUVBLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDOzs7S0FHcEIsT0FBTyxDQUFDLGNBQWMsRUFBRSxTQUFBLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxBQUFHLFNBQUEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFBLENBQUMsR0FBQTsifQ==