Class: Puppeteer::Bidi::Deserializer
- Inherits:
-
Object
- Object
- Puppeteer::Bidi::Deserializer
- Defined in:
- lib/puppeteer/bidi/deserializer.rb,
sig/puppeteer/bidi/deserializer.rbs
Overview
Deserializer converts BiDi Script.RemoteValue to Ruby values Based on Puppeteer's Deserializer.ts
Class Method Summary collapse
-
.deserialize(remote_value, realm = nil) ⇒ Object
Deserialize a BiDi RemoteValue to Ruby value.
Class Method Details
.deserialize(remote_value, realm = nil) ⇒ Object
Deserialize a BiDi RemoteValue to Ruby value
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/puppeteer/bidi/deserializer.rb', line 17 def deserialize(remote_value, realm = nil) return remote_value unless remote_value.is_a?(Hash) type = remote_value['type'] case type when 'string' remote_value['value'] when 'number' deserialize_number(remote_value['value']) when 'boolean' remote_value['value'] when 'null' nil when 'undefined' nil when 'bigint' # BiDi sends bigint as string, convert to Integer remote_value['value'].to_i when 'array' # Deserialize array elements return [] unless remote_value['value'] remote_value['value'].map { |item| deserialize(item, realm) } when 'set' # Deserialize set elements and return Ruby Set return Set.new unless remote_value['value'] Set.new(remote_value['value'].map { |item| deserialize(item, realm) }) when 'object' # Object is an array of [key, value] tuples deserialize_object(remote_value['value'], realm) when 'map' # Map is an array of [key, value] tuples with non-string keys deserialize_map(remote_value['value'], realm) when 'regexp' # Reconstruct Ruby Regexp deserialize_regexp(remote_value['value']) when 'date' # Parse ISO 8601 datetime string Time.parse(remote_value['value']) when 'promise' # Promise placeholder - return empty hash {} when 'node' # DOM node - create ElementHandle if realm provided if realm ElementHandle.new(realm, remote_value) else # Without realm, return the remote value as-is remote_value end else # Unknown type - create JSHandle if realm provided if realm JSHandle.new(realm, remote_value) else # Without realm, return value as-is or nil remote_value['value'] end end end |