class BetterStruct

Attributes

_optional_params[RW]
_required_params[RW]

Public Class Methods

new(hashish) click to toggle source
# File lib/better-struct.rb, line 8
def initialize(hashish)
  hashish.each do |key, val|
    send(:"#{key}=", val)
  end
end
optional_params(*optional_keys) click to toggle source
# File lib/better-struct.rb, line 31
def self.optional_params(*optional_keys)
  _optional_params |= Array.wrap(optional_keys)
  optional_keys.each(&method(:attr_accessor))
end
required_params(*required_keys) click to toggle source
# File lib/better-struct.rb, line 25
def self.required_params(*required_keys)
  _required_params |= Array.wrap(required_keys)
  required_keys.each(&method(:attr_accessor))
  required_keys.each(&method(:validates_presence_of))
end

Public Instance Methods

to_h() click to toggle source
# File lib/better-struct.rb, line 14
def to_h
  {}.tap do |attrs|
    instance_variables.each do |var|
      str = var.to_s.gsub /^@/, ''
      if respond_to? "#{str}="
        attrs[str.to_sym] = instance_variable_get var
      end
    end
  end.compact
end