Module: Spidy::Binder::Json

Defined in:
lib/spidy/binder/json.rb

Overview

Bind json and convert to object

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(obj) ⇒ Object



24
25
26
# File 'lib/spidy/binder/json.rb', line 24

def self.extended(obj)
  obj.alias_method :json, :resource
end

Instance Method Details

#let(name, *query, &block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/spidy/binder/json.rb', line 7

def let(name, *query, &block)
  @attribute_names ||= []
  @attribute_names << name

  return define_method(name) { json.dig(*query) } if block.nil?

  define_method(name) do
    if query.present?
      instance_exec(json.dig(*query), &block)
    else
      instance_exec(&block)
    end
  rescue StandardError => e
    raise Spidy::Binder::Error, "spidy(#{@define_name})##{name} => #{e.message}"
  end
end