Module: Ponto::Util

Defined in:
lib/ponto/util.rb

Class Method Summary collapse

Class Method Details

.camelize(string, uppercase_first_letter = true) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/ponto/util.rb', line 19

def self.camelize(string, uppercase_first_letter = true)
  string = if uppercase_first_letter
             string.sub(/^[a-z\d]*/) { $&.capitalize }
           else
             string.sub(/^(?:(?=\b|[A-Z_])|\w)/) { $&.downcase }
           end
  string.gsub(/(?:_|(\/))([a-z\d]*)/) { "#{Regexp.last_match(1)}#{Regexp.last_match(2).capitalize}" }.gsub("/", "::")
end

.underscore(camel_cased_word) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/ponto/util.rb', line 10

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

.underscorize_hash(attributes) ⇒ Object



3
4
5
6
7
8
# File 'lib/ponto/util.rb', line 3

def self.underscorize_hash(attributes)
  attributes.keys.reduce({}) do |result, key|
    result[underscore(key)] = attributes[key]
    result
  end
end