Class: String

Inherits:
Object
  • Object
show all
Defined in:
lib/titlecase.rb

Instance Method Summary collapse

Instance Method Details

#smart_capitalizeObject



22
23
24
25
26
27
28
29
30
31
# File 'lib/titlecase.rb', line 22

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

#smart_capitalize!Object



33
34
35
# File 'lib/titlecase.rb', line 33

def smart_capitalize!
  replace(smart_capitalize)
end

#titlecaseObject



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/titlecase.rb', line 2

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

#titlecase!Object



18
19
20
# File 'lib/titlecase.rb', line 18

def titlecase!
  replace(titlecase)
end