Bonfire: Spinal Tap Case

by Luis Valle

JavaScript

function spinalCase(str) {
	str = str.replace(/\-/g, ' ').replace(/\_/g, ' ');
  var arrM = str.split(' ');
  
  if (arrM.length > 1) {
  	for (var i=0; i < arrM.length; i++) {
    	arrM[i] = arrM[i].toLowerCase();
    }
    
    return arrM.join('-');
  } else {
  	var xArr = [];
    xArr.push(arrM[0][0].toLowerCase());
    
    for (var i=1; i < arrM[0].length; i++) {
    	var xThis = arrM[0][i];
      if (xThis.match(/^[A-Z]*$/)) {
      	xArr.push('-' + xThis.toLowerCase());
      } else {
      	xArr.push(xThis.toLowerCase());
      }
    }
    
    return xArr.join('');
  }
  
  return str;
}

alert(spinalCase('ThisIsSpinalTapYes'));