Blame view

node_modules/no-case/no-case.js 1.08 KB
aaac7fed   liuqimichale   add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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)
  }