150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
# File 'lib/delorean/base.rb', line 150
def self._index(obj, args, _e)
case obj
when nil
nil
when Hash
raise InvalidIndex unless args.length == 1
_get_hash_attr(obj, args[0], _e, true)
when NodeCall, Class, OpenStruct
raise InvalidIndex unless args.length == 1
_get_attr(obj, args[0], _e)
when Array, String, MatchData
raise InvalidIndex unless args.length <= 2 &&
args[0].is_a?(Integer) &&
(args[1].nil? || args[1].is_a?(Integer))
obj[*args]
else
raise InvalidIndex
end
end
|