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
new(hash = {})
click to toggle 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
==(other)
click to toggle source
# File lib/yard/open_struct.rb, line 25 def ==(other) other.is_a?(self.class) && to_h == other.to_h end
[](key)
click to toggle source
# File lib/yard/open_struct.rb, line 41 def [](key) @table[key.to_sym] end
[]=(key, value)
click to toggle source
# File lib/yard/open_struct.rb, line 37 def []=(key, value) @table[key.to_sym] = value end
dig(*keys)
click to toggle source
# File lib/yard/open_struct.rb, line 33 def dig(*keys) @table.dig(*keys) end
each_pair(&block)
click to toggle source
# File lib/yard/open_struct.rb, line 45 def each_pair(&block) @table.each_pair(&block) end
hash()
click to toggle source
# File lib/yard/open_struct.rb, line 29 def hash @table.hash end
marshal_dump()
click to toggle source
# File lib/yard/open_struct.rb, line 49 def marshal_dump @table end
marshal_load(data)
click to toggle source
# File lib/yard/open_struct.rb, line 53 def marshal_load(data) @table = data end
method_missing(name, *args)
click to toggle source
@private
# 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
to_h()
click to toggle source
# File lib/yard/open_struct.rb, line 21 def to_h @table.dup end
Private Instance Methods
__cache_lookup__(name)
click to toggle 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