8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/ebsco/eds/facet_titleize.rb', line 8
def titleize(title, opts={})
title = title.dup
title.downcase! unless title[/[[:lower:]]/]
small_words = SMALL_WORDS + (opts[:small_words] || [])
small_words = small_words + small_words.map { |small| small.capitalize }
acronyms = ACRONYMS + (opts[:acronyms] || [])
acronyms = acronyms + acronyms.map { |acronym| acronym.downcase }
phrases(title).map do |phrase|
words = phrase.split
words.map.with_index do |word, index|
if acronyms.include?(word.gsub(/[()]/,''))
word.upcase
else
def word.capitalize
self.sub(/[[:alpha:]].*/) {|subword| subword.capitalize}
end
case word
when /[[:alpha:]]\.[[:alpha:]]/
word
when /[-‑]/
word.split(/([-‑])/).map do |part|
SMALL_WORDS.include?(part) ? part : part.capitalize
end.join
when /^[[:alpha:]].*[[:upper:]]/
word
when /^[[:digit:]]/
word
when *small_words
if index == 0 || index == words.size - 1
word.capitalize
else
word.downcase
end
else
word.capitalize
end
end
end.join(' ')
end.join(' ')
end
|