Method: Class#instance_attr_accessor

Defined in:
lib/openc3/core_ext/class.rb

#instance_attr_accessor(*args) ⇒ Object

Parameters:

  • args (Array<Symbol>)

    Array of symbols which should be turned into instance variables with class method accessors (read and write)



62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/openc3/core_ext/class.rb', line 62

def instance_attr_accessor(*args)
  args.each do |arg|
    # Non-word characters (letter, number, underscore) are disallowed
    raise ArgumentError, "Non-word characters characters parsed" if arg =~ /\W/

    # Fortify: Dynamic Code Evaluation: Code Injection
    # This is true but we're whitelisting the input above
    self.class_eval("def #{arg};@#{arg};end")
    self.instance_eval("def #{arg};self.instance.#{arg};end")
    self.class_eval("def #{arg}=(arg);@#{arg} = arg;end")
    self.instance_eval("def #{arg}=(arg);self.instance.#{arg} = arg;end")
  end
end