Module: Doodle::Utils
- Defined in:
- lib/doodle.rb
Overview
Set of utility functions to avoid monkeypatching base classes
Class Method Summary collapse
-
.const_resolve(constant) ⇒ Object
resolve a constant of the form Some::Class::Or::Module.
-
.flatten_first_level(enum) ⇒ Object
Unnest arrays by one level of nesting, e.g.
-
.snake_case(camel_cased_word) ⇒ Object
from facets/string/case.rb, line 80.
-
.symbolize_keys(hash) ⇒ Object
convert keys to symbols.
-
.symbolize_keys!(hash) ⇒ Object
convert keys to symbols - updates target hash.
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 |