UNPKG

1.34 kBJavaScriptView Raw
1var toString = require('../lang/toString');
2var replaceAccents = require('./replaceAccents');
3var removeNonWord = require('./removeNonWord');
4var upperCase = require('./upperCase');
5var lowerCase = require('./lowerCase');
6 /**
7 * Convert string to camelCase text.
8 */
9 function camelCase(str){
10 str = toString(str);
11 str = replaceAccents(str);
12 str = removeNonWord(str)
13 .replace(/[\-_]/g, ' '); // convert all hyphens and underscores to spaces
14
15 // handle acronyms
16 // matches lowercase chars && uppercase words
17 if (/[a-z]/.test(str) && /^|\s[A-Z]+\s|$/.test(str)) {
18 // we convert any word that isn't all caps into lowercase
19 str = str.replace(/\s(\w+)/g, function(word, m) {
20 return /^[A-Z]+$/.test(m) ? word : lowerCase(word);
21 });
22 } else if (/\s/.test(str)) {
23 // if it doesn't contain an acronym and it has spaces we should
24 // convert every word to lowercase
25 str = lowerCase(str);
26 }
27
28 return str
29 .replace(/\s[a-z]/g, upperCase) // convert first char of each word to UPPERCASE
30 .replace(/^\s*[A-Z]+/g, lowerCase) // convert first word to lowercase
31 .replace(/\s+/g, ''); // remove spaces
32 }
33 module.exports = camelCase;
34