Module: Doodle::Utils

Defined in:
lib/doodle.rb

Overview

Set of utility functions to avoid monkeypatching base classes

Class Method Summary collapse

Class Method Details

.const_resolve(constant) ⇒ Object

resolve a constant of the form Some::Class::Or::Module



62
63
64
# File 'lib/doodle.rb', line 62

def const_resolve(constant)
  constant.to_s.split(/::/).reject{|x| x.empty?}.inject(Object) { |prev, this| prev.const_get(this) }
end

.flatten_first_level(enum) ⇒ Object

Unnest arrays by one level of nesting, e.g. [1, [[2], 3]] => [1, [2], 3].



54
55
56
# File 'lib/doodle.rb', line 54

def flatten_first_level(enum)
  enum.inject([]) {|arr, i| if i.kind_of? Array then arr.push(*i) else arr.push(i) end }
end

.snake_case(camel_cased_word) ⇒ Object

from facets/string/case.rb, line 80



58
59
60
# File 'lib/doodle.rb', line 58

def snake_case(camel_cased_word)
  camel_cased_word.gsub(/([A-Z]+)([A-Z])/,'\1_\2').gsub(/([a-z])([A-Z])/,'\1_\2').downcase
end

.symbolize_keys(hash) ⇒ Object

convert keys to symbols



74
75
76
# File 'lib/doodle.rb', line 74

def symbolize_keys(hash)
  symbolize_keys(hash.dup)
end

.symbolize_keys!(hash) ⇒ Object

convert keys to symbols - updates target hash



66
67
68
69
70
71
72
# File 'lib/doodle.rb', line 66

def symbolize_keys!(hash)
  hash.keys.each do |key|
    sym_key = key.respond_to?(:to_sym) ? key.to_sym : key
    hash[sym_key] = hash.delete(key)
  end
  hash
end