Report abuse


			
def title_case title
  small_words= %w[a an and as at but by en for if in of on or the to via]
  iWords= /\W?[a-z]+[A-Z]/
  vs_words= /^vs?\.?$/

  title.split.map do |word|
    case 
    when small_words.include?(word.downcase)
      word.downcase
    when word=~ iWords || word=~ vs_words || word.upcase== word
      word
    else
      word.capitalize
    end
  end.join(' ').gsub(/^[a-z]+\W/){|first_word|first_word.capitalize}
end