Module: DiffbotSimple::Symbolize
- Included in:
- V2::ApiHelper
- Defined in:
- lib/diffbot_simple/symbolize.rb
Class Method Summary collapse
Class Method Details
.symbolize(hash) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/diffbot_simple/symbolize.rb', line 3 def symbolize hash return hash unless hash.kind_of? Hash or hash.kind_of? Array sym_hash = y_combinator do |&f| lambda do |h| if h.kind_of? Array h.map {|r| f.call(r)} elsif h.kind_of? Hash h.reduce({}) do |memo,(k,v)| v = f.call(v) if v.kind_of? Hash v = v.map {|u| f.call(u)} if v.kind_of? Array memo[k.to_sym] = v memo end else h end end end sym_hash.call hash end |
.y_combinator(&f) ⇒ Object
25 26 27 28 29 |
# File 'lib/diffbot_simple/symbolize.rb', line 25 def y_combinator(&f) lambda do |g| f.call {|*args| g[g][*args]} end.tap {|g| break g[g]} end |