mirror of
https://github.com/WatchOutNewsAgency/wona.github.com.git
synced 2026-01-01 01:16:26 +00:00
Moved plugins to root directory. I'm ditching the idea of shipping plugins with themes until it's more obviously necessary. This way it's easier to merge and update plugins.
This commit is contained in:
36
plugins/titlecase.rb
Normal file
36
plugins/titlecase.rb
Normal file
@ -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
|
||||
Reference in New Issue
Block a user