class JsonAccessor

Attributes

access_methods[RW]
code[RW]
mutator[RW]

Public Class Methods

new(code, mutator) click to toggle source
# File lib/random_api/json_accessor.rb, line 4
def initialize(code, mutator)
  self.code = code
  self.access_methods = []
  self.mutator = mutator
  build
end

Public Instance Methods

build() click to toggle source
# File lib/random_api/json_accessor.rb, line 19
def build
  keys = code.split(".")
  if keys.first == "$"
    access_methods << gen_root_access_lambda
    keys.shift
  end
  keys.each do |key|
    access_methods << gen_access_key_lambda(key)
  end
end
call(json) click to toggle source
# File lib/random_api/json_accessor.rb, line 30
def call(json)
  ret = json
  access_methods.each do |method|
    ret = method.(ret)
  end
  mutate(ret)
end
gen_access_key_lambda(key) click to toggle source
# File lib/random_api/json_accessor.rb, line 15
def gen_access_key_lambda(key)
  ->(json) { json[key] }
end
gen_root_access_lambda() click to toggle source
# File lib/random_api/json_accessor.rb, line 11
def gen_root_access_lambda
  ->(json) { json }
end
mutate(value) click to toggle source
# File lib/random_api/json_accessor.rb, line 38
def mutate(value)
  unless mutator.nil?
    mutator.(value)
  else
    value
  end
end