Module: HornOfPlenty::Parsable::ClassMethods

Defined in:
lib/horn_of_plenty/models/parsable.rb

Instance Method Summary collapse

Instance Method Details

#from_parser(parser:) ⇒ Object



5
6
7
# File 'lib/horn_of_plenty/models/parsable.rb', line 5

def from_parser(parser:)
  new(parser: parser)
end

#parsable_attributes(*attribute_list) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/horn_of_plenty/models/parsable.rb', line 9

def parsable_attributes(*attribute_list)
  attribute_list.each do |attribute|
    instance_variable_name = "@#{attribute.to_s.gsub(/[\?]/, '')}".to_sym

    define_method attribute do
      if instance_variable_get(instance_variable_name).nil?
        parser.__send__(attribute)
      else
        instance_variable_get(instance_variable_name)
      end
    end

    define_method "#{attribute}=" do |other|
      instance_variable_set(instance_variable_name, other)
    end
  end
end