Class: OpenStruct
Instance Method Summary collapse
- #==(other) ⇒ Object
- #===(other) ⇒ Object
- #[](name) ⇒ Object
- #[]=(name, value) ⇒ Object
- #each_pair ⇒ Object
- #eql?(other) ⇒ Boolean
- #hash ⇒ Object
-
#initialize(hash = nil) ⇒ OpenStruct
constructor
A new instance of OpenStruct.
- #inspect ⇒ Object
- #method_missing(name, *args) ⇒ Object
- #to_h ⇒ Object
- #to_n ⇒ Object
Constructor Details
#initialize(hash = nil) ⇒ OpenStruct
Returns a new instance of OpenStruct
2 3 4 5 6 7 8
# File 'opal/stdlib/ostruct.rb', line 2 def initialize(hash = nil) @table = {} hash.each_pair {|key, value| @table[key.to_sym] = value } if hash end
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args) ⇒ Object
18 19 20 21 22 23 24
# File 'opal/stdlib/ostruct.rb', line 18 def method_missing(name, *args) if name.end_with? '=' @table[name[0 .. -2].to_sym] = args[0] else @table[name.to_sym] end end
Instance Method Details
#==(other) ⇒ Object
34 35 36 37 38
# File 'opal/stdlib/ostruct.rb', line 34 def ==(other) return false unless other.is_a?(OpenStruct ) @table == other.instance_variable_get(:@table) end
#===(other) ⇒ Object
40 41 42 43 44
# File 'opal/stdlib/ostruct.rb', line 40 def ===(other) return false unless other.is_a?(OpenStruct ) @table === other.instance_variable_get(:@table) end
#[](name) ⇒ Object
10 11 12
# File 'opal/stdlib/ostruct.rb', line 10 def [](name) @table[name.to_sym] end
#[]=(name, value) ⇒ Object
14 15 16
# File 'opal/stdlib/ostruct.rb', line 14 def []=(name, value) @table[name.to_sym] = value end
#each_pair ⇒ Object
26 27 28 29 30 31 32
# File 'opal/stdlib/ostruct.rb', line 26 def each_pair return enum_for :each_pair unless block_given? @table.each_pair {|pair| yield pair } end
#eql?(other) ⇒ Boolean
Returns:
- (Boolean )
46 47 48 49 50
# File 'opal/stdlib/ostruct.rb', line 46 def eql?(other) return false unless other.is_a?(OpenStruct ) @table.eql? other.instance_variable_get(:@table) end
#hash ⇒ Object
60 61 62
# File 'opal/stdlib/ostruct.rb', line 60 def hash @table.hash end
#inspect ⇒ Object
64 65 66 67 68
# File 'opal/stdlib/ostruct.rb', line 64 def inspect "#<#{self.class}: #{each_pair.map {|name, value| "#{name}=#{self[name].inspect}" }.join("")}>" end
#to_h ⇒ Object
52 53 54
# File 'opal/stdlib/ostruct.rb', line 52 def to_h @table.dup end
#to_n ⇒ Object
56 57 58
# File 'opal/stdlib/ostruct.rb', line 56 def to_n @table.to_n end