Class: Native::Array
  
  
  
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods included from Enumerable
  #to_json, #to_set
  
  
  
  
  
  
  
  
  Methods included from Native
  call, convert, included, is_a?, proc, #to_n, try_convert
  Constructor Details
  
    
  
  
    #initialize(native, options = {}, &block)  ⇒ Array 
  
  
  
  
    Returns a new instance of Array
   
 
  
  
    | 
358
359
360
361
362
363
364
365
366
367
368
369
370 | # File 'opal/stdlib/native.rb', line 358
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 
  
  
  
  
    | 
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400 | # File 'opal/stdlib/native.rb', line 384
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 
  
  
  
  
    | 
402
403
404
405
406
407
408 | # File 'opal/stdlib/native.rb', line 402
def []=(index, value)
  if @set
    `#@native[#@set](#{index}, #{Native.convert(value)})`
  else
    `#@native[#{index}] = #{Native.convert(value)}`
  end
end | 
 
    
      
  
  
    #each(&block)  ⇒ Object 
  
  
  
  
    | 
372
373
374
375
376
377
378
379
380
381
382 | # File 'opal/stdlib/native.rb', line 372
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 | 
 
    
      
  
  
    | 
432
433
434 | # File 'opal/stdlib/native.rb', line 432
def inspect
  to_a.inspect
end | 
 
    
      
  
  
    #last(count = nil)  ⇒ Object 
  
  
  
  
    | 
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424 | # File 'opal/stdlib/native.rb', line 410
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 | 
 
    
      
  
  
    | 
426
427
428 | # File 'opal/stdlib/native.rb', line 426
def length
  `#@native[#@length]`
end |