Module: Elmas::Utils

Defined in:
lib/elmas/utils.rb

Class Method Summary collapse

Class Method Details

.camelize(word, uppercase_first_letter = true) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/elmas/utils.rb', line 21

def self.camelize(word, uppercase_first_letter = true)
  if uppercase_first_letter
    word.to_s.gsub(%r{/\/(.?)/}) { "::" + $1.upcase }.gsub(/(^|_)(.)/) { $2.upcase }
  else
    word[0] + Utils.camelize(word)[1..-1]
  end
end

.collection_path(class_name) ⇒ Object



17
18
19
# File 'lib/elmas/utils.rb', line 17

def self.collection_path(class_name)
  (Utils.pluralize Utils.demodulize class_name).downcase
end

.demodulize(class_name_in_module) ⇒ Object



5
6
7
# File 'lib/elmas/utils.rb', line 5

def self.demodulize(class_name_in_module)
  class_name_in_module.to_s.sub(/^.*::/, "")
end

.modulize(class_name) ⇒ Object



13
14
15
# File 'lib/elmas/utils.rb', line 13

def self.modulize(class_name)
  "Elmas::#{class_name}"
end

.normalize_hash(hash) ⇒ Object



41
42
43
# File 'lib/elmas/utils.rb', line 41

def self.normalize_hash(hash)
  Hash[hash.map { |k, v| [Utils.normalize_hash_key(k), v] }] if hash
end

.normalize_hash_key(key) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/elmas/utils.rb', line 29

def self.normalize_hash_key(key)
  if key.is_a? String
    key = key.gsub(/::/, "/")
    key = key.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
    key = key.gsub(/([a-z\d])([A-Z])/, '\1_\2')
    key = key.tr("-", "_")
    key = key.downcase
    return key.to_sym
  end
  key
end

.parse_key(key) ⇒ Object



45
46
47
48
# File 'lib/elmas/utils.rb', line 45

def self.parse_key(key)
  "VATCode" if key.casecmp "vat_code"
  Utils.camelize(key)
end

.pluralize(word) ⇒ Object



9
10
11
# File 'lib/elmas/utils.rb', line 9

def self.pluralize(word)
  word.to_s.sub(/([^s])$/, '\1s')
end