class YARD::OpenStruct
An OpenStruct
compatible struct class that allows for basic access of attributes via struct.attr_name
and +struct.attr_name = value+.
Public Class Methods
Source
# File lib/yard/open_struct.rb, line 5 def initialize(hash = {}) @table = hash.each_pair { |k, v| [k.to_sym, v] } end
Public Instance Methods
Source
# File lib/yard/open_struct.rb, line 25 def ==(other) other.is_a?(self.class) && to_h == other.to_h end
Source
# File lib/yard/open_struct.rb, line 37 def []=(key, value) @table[key.to_sym] = value end
Source
# File lib/yard/open_struct.rb, line 45 def each_pair(&block) @table.each_pair(&block) end
Source
# File lib/yard/open_struct.rb, line 53 def marshal_load(data) @table = data end
Source
# File lib/yard/open_struct.rb, line 10 def method_missing(name, *args) if name.to_s.end_with?('=') varname = name.to_s[0..-2].to_sym __cache_lookup__(varname) send(name, args.first) else __cache_lookup__(name) send(name) end end
@private
Private Instance Methods
Source
# File lib/yard/open_struct.rb, line 59 def __cache_lookup__(name) key = name.to_sym.inspect instance_eval <<-RUBY, __FILE__, __LINE__ + 1 def #{name}; @table[#{key}]; end def #{name.to_s.sub('?','_')}=(v); @table[#{key}] = v; end unless #{key}.to_s.include?('?') RUBY end