diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-03 15:35:00 +0200 |
commit | de98e0b232509d5f40c135d540a70e415272ff85 (patch) | |
tree | a79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/no-case/no-case.js | |
parent | e0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff) |
node_modules
Diffstat (limited to 'node_modules/no-case/no-case.js')
-rw-r--r-- | node_modules/no-case/no-case.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/node_modules/no-case/no-case.js b/node_modules/no-case/no-case.js new file mode 100644 index 000000000..cf24540f2 --- /dev/null +++ b/node_modules/no-case/no-case.js @@ -0,0 +1,40 @@ +var lowerCase = require('lower-case') + +var NON_WORD_REGEXP = require('./vendor/non-word-regexp') +var CAMEL_CASE_REGEXP = require('./vendor/camel-case-regexp') +var CAMEL_CASE_UPPER_REGEXP = require('./vendor/camel-case-upper-regexp') + +/** + * Sentence case a string. + * + * @param {string} str + * @param {string} locale + * @param {string} replacement + * @return {string} + */ +module.exports = function (str, locale, replacement) { + if (str == null) { + return '' + } + + replacement = typeof replacement !== 'string' ? ' ' : replacement + + function replace (match, index, value) { + if (index === 0 || index === (value.length - match.length)) { + return '' + } + + return replacement + } + + str = String(str) + // Support camel case ("camelCase" -> "camel Case"). + .replace(CAMEL_CASE_REGEXP, '$1 $2') + // Support odd camel case ("CAMELCase" -> "CAMEL Case"). + .replace(CAMEL_CASE_UPPER_REGEXP, '$1 $2') + // Remove all non-word characters and replace with a single space. + .replace(NON_WORD_REGEXP, replace) + + // Lower case the entire string. + return lowerCase(str, locale) +} |