Title Capitalization

by verashn

HTML

<input id="title" name="title" placeholder="Enter a title">
<h2 id="titleResult">Title</h2>

JavaScript

var Title = (function() {
	var EXEMPT_FROM_CAP = ["a", "the", "to", "at", "in", "with", "and", "but", "or"];

  var capitalizeWord = function (word) {
    word = word[0].toUpperCase() + word.substring(1);
    return word;
  }

  var capitalizeTitle = function (title) {
    var titleStr = title.toLowerCase();
    var titleArr = titleStr.split(" ");
    var lastWord = titleArr.length - 1;

    var result = titleArr.map(function(word, index) {
      if (index === 0 || index === lastWord || EXEMPT_FROM_CAP.indexOf(word) === -1) {
      	word = capitalizeWord(word);
      }
      return word;
    }).join(" ");

    return result;
  }
  
  return {
  	capitalizeTitle: capitalizeTitle
  };
}());

var titleInput = document.getElementById('title'),
		titleResult = document.getElementById('titleResult');
    
titleInput.addEventListener('change', function() {
  titleResult.innerHTML = Title.capitalizeTitle(this.value);
});

console.log( Title.capitalizeTitle("wHy DoeS A biRd Fly?"));
console.log (Title.capitalizeTitle("the cow flies over the moon with"));