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