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