Class: Native::Array
Instance Method Summary
collapse
Methods included from Enumerable
#each_async, #to_json, #to_set
Methods included from Wrapper
included, #to_n
Constructor Details
#initialize(native, options = {}, &block) ⇒ Array
Returns a new instance of Array.
366
367
368
369
370
371
372
373
374
375
376
377
378
|
# File 'opal/stdlib/native.rb', line 366
def initialize(native, options = {}, &block)
super(native)
@get = options[:get] || options[:access]
@named = options[:named]
@set = options[:set] || options[:access]
@length = options[:length] || :length
@block = block
if `#{length} == null`
raise ArgumentError, 'no length found on the array-like object'
end
end
|
Instance Method Details
#[](index) ⇒ Object
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
|
# File 'opal/stdlib/native.rb', line 392
def [](index)
result = case index
when String, Symbol
@named ? `#{@native}[#{@named}](#{index})` : `#{@native}[#{index}]`
when Integer
@get ? `#{@native}[#{@get}](#{index})` : `#{@native}[#{index}]`
end
if result
if @block
@block.call(result)
else
Native(result)
end
end
end
|
#[]=(index, value) ⇒ Object
409
410
411
412
413
414
415
|
# File 'opal/stdlib/native.rb', line 409
def []=(index, value)
if @set
`#{@native}[#{@set}](#{index}, #{Native.convert(value)})`
else
`#{@native}[#{index}] = #{Native.convert(value)}`
end
end
|
#each(&block) ⇒ Object
380
381
382
383
384
385
386
387
388
389
390
|
# File 'opal/stdlib/native.rb', line 380
def each(&block)
return enum_for :each unless block
%x{
for (var i = 0, length = #{length}; i < length; i++) {
Opal.yield1(block, #{self[`i`]});
}
}
self
end
|
437
438
439
|
# File 'opal/stdlib/native.rb', line 437
def inspect
to_a.inspect
end
|
#last(count = nil) ⇒ Object
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
|
# File 'opal/stdlib/native.rb', line 417
def last(count = nil)
if count
index = length - 1
result = []
while index >= 0
result << self[index]
index -= 1
end
result
else
self[length - 1]
end
end
|
433
434
435
|
# File 'opal/stdlib/native.rb', line 433
def length
`#{@native}[#{@length}]`
end
|