Module: AqBanking::Parsed::DefineField

Included in:
Account, Status, Transaction
Defined in:
lib/aq_banking/parsed/define_field.rb

Instance Method Summary collapse

Instance Method Details

#define_field(*fields, path: nil, default: nil, &transform_block) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'lib/aq_banking/parsed/define_field.rb', line 2

def define_field *fields, path: nil, default: nil, &transform_block
  fields.each do |field_name|
    define_method field_name do
      raise 'tree must be set' if tree.nil?

      default_block = lambda {|field| field.value }
      default_path = field_name.to_s.camelize(:lower).to_sym

      field = tree.query(path || default_path).first
      field.present? ? (transform_block || default_block).call(field) : default
    end
  end
end