Class: Native::Array
- Includes:
- Enumerable, Wrapper
- Defined in:
- opal/stdlib/native.rb
Instance Method Summary collapse
- #[](index) ⇒ Object
- #[]=(index, value) ⇒ Object
- #each(&block) ⇒ Object
-
#initialize(native, options = {}, &block) ⇒ Array
constructor
A new instance of Array.
- #inspect ⇒ Object
- #last(count = nil) ⇒ Object
- #length ⇒ Object
Methods included from Enumerable
Methods included from Wrapper
Constructor Details
#initialize(native, options = {}, &block) ⇒ Array
Returns a new instance of Array.
369 370 371 372 373 374 375 376 377 378 379 380 381 |
# File 'opal/stdlib/native.rb', line 369 def initialize(native, = {}, &block) super(native) @get = [:get] || [:access] @named = [:named] @set = [:set] || [:access] @length = [:length] || :length @block = block if `#{length} == null` raise ArgumentError, 'no length found on the array-like object' end end |
Instance Method Details
#[](index) ⇒ Object
395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 |
# File 'opal/stdlib/native.rb', line 395 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
412 413 414 415 416 417 418 |
# File 'opal/stdlib/native.rb', line 412 def []=(index, value) if @set `#{@native}[#{@set}](#{index}, #{Native.convert(value)})` else `#{@native}[#{index}] = #{Native.convert(value)}` end end |
#each(&block) ⇒ Object
383 384 385 386 387 388 389 390 391 392 393 |
# File 'opal/stdlib/native.rb', line 383 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 |
#inspect ⇒ Object
440 441 442 |
# File 'opal/stdlib/native.rb', line 440 def inspect to_a.inspect end |
#last(count = nil) ⇒ Object
420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 |
# File 'opal/stdlib/native.rb', line 420 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 |
#length ⇒ Object
436 437 438 |
# File 'opal/stdlib/native.rb', line 436 def length `#{@native}[#{@length}]` end |