Module: Elmas::Utils

Defined in:
lib/elmas/utils.rb

Class Method Summary collapse

Class Method Details

.camelize(word, uppercase_first_letter = true) ⇒ Object



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

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



15
16
17
# File 'lib/elmas/utils.rb', line 15

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

.demodulize(class_name_in_module) ⇒ Object



3
4
5
# File 'lib/elmas/utils.rb', line 3

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

.modulize(class_name) ⇒ Object



11
12
13
# File 'lib/elmas/utils.rb', line 11

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

.normalize_hash(hash) ⇒ Object



39
40
41
# File 'lib/elmas/utils.rb', line 39

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

.normalize_hash_key(key) ⇒ Object



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

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



43
44
45
46
# File 'lib/elmas/utils.rb', line 43

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

.pluralize(word) ⇒ Object



7
8
9
# File 'lib/elmas/utils.rb', line 7

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