Skip to content

Instantly share code, notes, and snippets.

@rfprod
Last active April 22, 2017 15:58
Show Gist options
  • Save rfprod/de5022d79f21a354f9f1 to your computer and use it in GitHub Desktop.
Save rfprod/de5022d79f21a354f9f1 to your computer and use it in GitHub Desktop.
Spinal Tap Case
function spinalCase(str) {
// "It's such a fine line between stupid, and clever."
// --David St. Hubbins
var inputArr = [];
var splitIndex = [];
if (str.indexOf(" ") > - 1){
inputArr = str.split(" ");
}else if (str.indexOf("_") > - 1){
inputArr = str.split("_");
}else{
// detect uppercase letters position
for (var j=0;j<str.length;j++){
if (str[j] === str[j].toUpperCase()){
splitIndex.push(j);
}
}
// form array
for (var k=0;k<splitIndex.length;k++){
var start = 0;
if (k === 0){
start = 0;
}else{
start = splitIndex[k-1];
}
inputArr.push(str.slice(start,splitIndex[k]));
if (k == splitIndex.length-1){
inputArr.push(str.slice(splitIndex[k],str.length));
}
}
}
var dash = "-";
var output = inputArr[0].toLowerCase();
for (var i=1;i<inputArr.length;i++){
inputArr[i] = inputArr[i].toLowerCase();
output = output.concat(dash).concat(inputArr[i]);
}
return output;
}
spinalCase('thisIsSpinalTap');

Spinal Tap Case

Converts a string to spinal case. Spinal case is all-lowercase-words-joined-by-dashes.

A script by V.

License.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment