Class: OpenStruct
Instance Method Summary
collapse
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
|
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
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
|
60
61
62
|
# File 'opal/stdlib/ostruct.rb', line 60
def hash
@table.hash
end
|
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
|
52
53
54
|
# File 'opal/stdlib/ostruct.rb', line 52
def to_h
@table.dup
end
|
56
57
58
|
# File 'opal/stdlib/ostruct.rb', line 56
def to_n
@table.to_n
end
|