class Aldous::SimpleDto

Attributes

_data[R]

Public Class Methods

new(data = {}) click to toggle source
# File lib/aldous/simple_dto.rb, line 5
def initialize(data = {})
  @_data = data

  handle_errors_and_messages
  define_accessors
end

Public Instance Methods

errors() click to toggle source
# File lib/aldous/simple_dto.rb, line 12
def errors
  @errors ||= []
end
messages() click to toggle source
# File lib/aldous/simple_dto.rb, line 16
def messages
  @messages ||= []
end

Private Instance Methods

define_accessors() click to toggle source
# File lib/aldous/simple_dto.rb, line 33
def define_accessors
  self.class.class_exec(_data) do |_data|
    _data.each_key do |key|
      next if key.to_s == 'errors' || key.to_s == 'messages'
      # do nothing if method is already defined
      next if instance_methods(false).include?(key.to_sym)

      define_method key do
        @_data[key]
      end
    end
  end
end
handle_errors_and_messages() click to toggle source
# File lib/aldous/simple_dto.rb, line 22
def handle_errors_and_messages
  # ensure that any errors or messages end up in the appropriate array
  _data.each_pair do |key, value|
    if key.to_s == 'errors'
      @errors = [value].flatten.compact
    elsif key.to_s == 'messages'
      @messages = [value].flatten.compact
    end
  end
end