Module: Spider::Inflector

Defined in:
lib/spiderfw/utils/inflector.rb

Class Method Summary collapse

Class Method Details

.camelize(lower_case_and_underscored_word, first_letter_in_uppercase = true) ⇒ Object

– From ActiveSupport



7
8
9
10
11
12
13
# File 'lib/spiderfw/utils/inflector.rb', line 7

def self.camelize(lower_case_and_underscored_word, first_letter_in_uppercase = true)
    if first_letter_in_uppercase
        lower_case_and_underscored_word.to_s.gsub(/\/(.?)/) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
    else
        lower_case_and_underscored_word.first + camelize(lower_case_and_underscored_word)[1..-1]
    end
end

.underscore(camel_cased_word) ⇒ Object

– From ActiveSupport



17
18
19
20
21
22
23
# File 'lib/spiderfw/utils/inflector.rb', line 17

def self.underscore(camel_cased_word)
    camel_cased_word.to_s.gsub(/::/, '/').
    gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
    gsub(/([a-z\d])([A-Z])/,'\1_\2').
    tr("-", "_").
    downcase
end

.underscore_to_upcasefirst(str) ⇒ Object



25
26
27
# File 'lib/spiderfw/utils/inflector.rb', line 25

def self.underscore_to_upcasefirst(str)
    upcasefirst(str.gsub(/_+/, ' '))
end

.upcasefirst(str) ⇒ Object



29
30
31
32
33
34
35
36
37
# File 'lib/spiderfw/utils/inflector.rb', line 29

def self.upcasefirst(str)
    # FIXME: move to language specific!
    no_upcase = ['di', 'da', 'a']
    res = str.split(' ').map do | p | 
        l = p.downcase
        l.gsub(/^[a-z]/){ |a| a.upcase } unless no_upcase.include?(l)
    end
    res.join(' ')
end