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