Class: Wands::JavaScript::ArrayBuffer
- Inherits:
-
Object
- Object
- Wands::JavaScript::ArrayBuffer
- Defined in:
- lib/wands/java_script/array_buffer.rb
Overview
A wrapper around JavaScript ArrayBuffer
Instance Method Summary collapse
-
#initialize(js_array_buffer = nil) ⇒ ArrayBuffer
constructor
A new instance of ArrayBuffer.
- #read ⇒ Object
- #size ⇒ Object
- #to_js_array_buffer ⇒ Object
- #write(binary_string) ⇒ Object
Constructor Details
#initialize(js_array_buffer = nil) ⇒ ArrayBuffer
Returns a new instance of ArrayBuffer.
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/wands/java_script/array_buffer.rb', line 9 def initialize(js_array_buffer = nil) @data = "".b return unless js_array_buffer raise ArgumentError, "Expected a JavaScript ArrayBuffer" unless JS.is_a?(js_array_buffer, JS.global[:ArrayBuffer]) uint8_array = JS.global[:Uint8Array].new(js_array_buffer) (0...js_array_buffer[:byteLength].to_i).each do |index| @data << uint8_array[index].to_i.chr end end |
Instance Method Details
#read ⇒ Object
39 40 41 |
# File 'lib/wands/java_script/array_buffer.rb', line 39 def read @data.dup end |
#size ⇒ Object
43 44 45 |
# File 'lib/wands/java_script/array_buffer.rb', line 43 def size @data.bytesize end |
#to_js_array_buffer ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'lib/wands/java_script/array_buffer.rb', line 29 def to_js_array_buffer uint8_array = JS.global[:Uint8Array].new(@data.bytesize) @data.bytes.each_with_index do |byte, index| uint8_array[index] = byte end uint8_array[:buffer] end |
#write(binary_string) ⇒ Object
23 24 25 26 27 |
# File 'lib/wands/java_script/array_buffer.rb', line 23 def write(binary_string) raise ArgumentError, "must be ASCII-8BIT encoded" unless binary_string.encoding == Encoding::ASCII_8BIT @data << binary_string end |