diff options
author | Brandon Mathis <brandon@imathis.com> | 2011-07-11 11:17:15 -0400 |
---|---|---|
committer | Brandon Mathis <brandon@imathis.com> | 2011-07-11 11:17:15 -0400 |
commit | ee7b9dd9581a048cee17e89181cba94254033fb2 (patch) | |
tree | 42c7d47ebfcaf9faf68a302a39a4815ef2e8f5ec /.themes/classic/plugins/titlecase.rb | |
parent | d4139e394ec9f70acfcb35f25340bdb541d0d7ee (diff) | |
download | my_new_personal_website-ee7b9dd9581a048cee17e89181cba94254033fb2.tar.xz my_new_personal_website-ee7b9dd9581a048cee17e89181cba94254033fb2.zip |
Changed _plugins folder to plugins and updated rake tasks accordingly
Diffstat (limited to '.themes/classic/plugins/titlecase.rb')
-rw-r--r-- | .themes/classic/plugins/titlecase.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/.themes/classic/plugins/titlecase.rb b/.themes/classic/plugins/titlecase.rb new file mode 100644 index 00000000..103bf702 --- /dev/null +++ b/.themes/classic/plugins/titlecase.rb @@ -0,0 +1,36 @@ +class String + def titlecase + small_words = %w(a an and as at but by en for if in of on or the to v v. via vs vs.) + + x = split(" ").map do |word| + # note: word could contain non-word characters! + # downcase all small_words, capitalize the rest + small_words.include?(word.gsub(/\W/, "").downcase) ? word.downcase! : word.smart_capitalize! + word + end + # capitalize first and last words + x.first.to_s.smart_capitalize! + x.last.to_s.smart_capitalize! + # small words after colons are capitalized + x.join(" ").gsub(/:\s?(\W*#{small_words.join("|")}\W*)\s/) { ": #{$1.smart_capitalize} " } + end + + def titlecase! + replace(titlecase) + end + + def smart_capitalize + # ignore any leading crazy characters and capitalize the first real character + if self =~ /^['"\(\[']*([a-z])/ + i = index($1) + x = self[i,self.length] + # word with capitals and periods mid-word are left alone + self[i,1] = self[i,1].upcase unless x =~ /[A-Z]/ or x =~ /\.\w+/ + end + self + end + + def smart_capitalize! + replace(smart_capitalize) + end +end |