class Spidy::Binder::Json

Bind json and convert to object

Public Class Methods

let(name, *query, &block) click to toggle source
# File lib/spidy/binder/json.rb, line 7
def self.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
    fail Spidy::Binder::Error, "spidy(#{@define_name})##{name} => #{e.message}"
  end
end