class SafeStruct
Public Class Methods
allowed()
click to toggle source
# File lib/r_kit/struct/safe_struct.rb, line 8 def self.allowed() @allowed end
defaults()
click to toggle source
# File lib/r_kit/struct/safe_struct.rb, line 9 def self.defaults() @defaults end
new(allowed:, defaults: {})
click to toggle source
# File lib/r_kit/struct/safe_struct.rb, line 3 def self.new allowed:, defaults: {} Class.new do @allowed = allowed.map(&:ivar) @defaults = defaults def self.allowed() @allowed end def self.defaults() @defaults end attr_reader *allowed, default: proc{ |_, name| defaults[name] } attr_writer *allowed def initialize **options options.keys.each do |name| instance_variable_set "@#{ name }", options[name] end end
new(**options)
click to toggle source
# File lib/r_kit/struct/safe_struct.rb, line 15 def initialize **options options.keys.each do |name| instance_variable_set "@#{ name }", options[name] end end
Public Instance Methods
instance_variable_set(name, value)
click to toggle source
Calls superclass method
# File lib/r_kit/struct/safe_struct.rb, line 21 def instance_variable_set name, value super if __class__.allowed.include? name end
to_hash()
click to toggle source
# File lib/r_kit/struct/safe_struct.rb, line 26 def to_hash instance_variables.reduce({}) do |options, name| options[name.lvar] = instance_variable_get name options end end