module HornOfPlenty::Parsable::ClassMethods

Public Instance Methods

from_parser(parser:) click to toggle source
# File lib/horn_of_plenty/models/parsable.rb, line 5
def from_parser(parser:)
  new(parser: parser)
end
parsable_attributes(*attribute_list) click to toggle source
# 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