Module: Scorpio::SchemaInstanceBaseArray
- Includes:
- Arraylike
- Defined in:
- lib/scorpio/schema_instance_base.rb
Constant Summary
Constants included
from Arraylike
Arraylike::DESTRUCTIVE_METHODS, Arraylike::SAFE_INDEX_ELEMENT_METHODS, Arraylike::SAFE_INDEX_ONLY_METHODS, Arraylike::SAFE_METHODS
Instance Method Summary
collapse
Methods included from Arraylike
#inspect, #pretty_print, #to_s
Instance Method Details
#[](i_) ⇒ Object
287
288
289
290
291
292
293
294
295
296
297
298
299
300
|
# File 'lib/scorpio/schema_instance_base.rb', line 287
def [](i_)
memoize(:[], i_) do |i|
begin
index_schema = schema.subschema_for_index(i)
index_schema = index_schema && index_schema.match_to_instance(instance[i])
if index_schema && instance[i].is_a?(JSON::Node)
Scorpio.class_for_schema(index_schema).new(instance[i])
else
instance[i]
end
end
end
end
|
#[]=(i, value) ⇒ Object
301
302
303
304
305
306
307
|
# File 'lib/scorpio/schema_instance_base.rb', line 301
def []=(i, value)
self.instance = instance.modified_copy do |ary|
ary.each_with_index.map do |el, ary_i|
ary_i == i ? value : el
end
end
end
|
#each ⇒ Object
269
270
271
272
273
|
# File 'lib/scorpio/schema_instance_base.rb', line 269
def each
return to_enum(__method__) { instance.size } unless block_given?
instance.each_index { |i| yield(self[i]) }
self
end
|
#to_ary ⇒ Object
275
276
277
|
# File 'lib/scorpio/schema_instance_base.rb', line 275
def to_ary
to_a
end
|