aboutsummaryrefslogtreecommitdiff
path: root/node_modules/no-case/no-case.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-03 15:35:00 +0200
commitde98e0b232509d5f40c135d540a70e415272ff85 (patch)
treea79222a5b58484ab3b80d18efcaaa7ccc4769b33 /node_modules/no-case/no-case.js
parente0c9d480a73fa629c1e4a47d3e721f1d2d345406 (diff)
node_modules
Diffstat (limited to 'node_modules/no-case/no-case.js')
-rw-r--r--node_modules/no-case/no-case.js40
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)
+}