28 lines
577 B
JavaScript
28 lines
577 B
JavaScript
var upperCase = require('upper-case')
|
|
var lowerCase = require('lower-case')
|
|
|
|
/**
|
|
* Swap the case of a string. Manually iterate over every character and check
|
|
* instead of replacing certain characters for better unicode support.
|
|
*
|
|
* @param {String} str
|
|
* @param {String} [locale]
|
|
* @return {String}
|
|
*/
|
|
module.exports = function (str, locale) {
|
|
if (str == null) {
|
|
return ''
|
|
}
|
|
|
|
var result = ''
|
|
|
|
for (var i = 0; i < str.length; i++) {
|
|
var c = str[i]
|
|
var u = upperCase(c, locale)
|
|
|
|
result += u === c ? lowerCase(c, locale) : u
|
|
}
|
|
|
|
return result
|
|
}
|