50 lines
819 B
JavaScript
50 lines
819 B
JavaScript
|
"use strict";
|
||
|
|
||
|
var ensureString = require("type/string/ensure")
|
||
|
, objHasOwnProperty = Object.prototype.hasOwnProperty;
|
||
|
|
||
|
var capitalLetters = {
|
||
|
A: true,
|
||
|
B: true,
|
||
|
C: true,
|
||
|
D: true,
|
||
|
E: true,
|
||
|
F: true,
|
||
|
G: true,
|
||
|
H: true,
|
||
|
I: true,
|
||
|
J: true,
|
||
|
K: true,
|
||
|
L: true,
|
||
|
M: true,
|
||
|
N: true,
|
||
|
O: true,
|
||
|
P: true,
|
||
|
Q: true,
|
||
|
R: true,
|
||
|
S: true,
|
||
|
T: true,
|
||
|
U: true,
|
||
|
V: true,
|
||
|
W: true,
|
||
|
X: true,
|
||
|
Y: true,
|
||
|
Z: true
|
||
|
};
|
||
|
|
||
|
module.exports = function () {
|
||
|
var input = ensureString(this);
|
||
|
if (!input) return input;
|
||
|
var outputLetters = [];
|
||
|
for (var index = 0, letter; (letter = input[index]); ++index) {
|
||
|
if (objHasOwnProperty.call(capitalLetters, letter)) {
|
||
|
if (index) outputLetters.push("-");
|
||
|
outputLetters.push(letter.toLowerCase());
|
||
|
} else {
|
||
|
outputLetters.push(letter);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return outputLetters.join("");
|
||
|
};
|