Class: Ruflet::WireCodec

Inherits:
Object
  • Object
show all
Defined in:
lib/ruflet/server/wire_codec.rb

Defined Under Namespace

Classes: ByteReader

Constant Summary collapse

PICKER_DATE_CONTROLS =
%w[CupertinoDatePicker DatePicker DateRangePicker].freeze
PICKER_DATE_KEYS =
%w[current_date end_value first_date last_date start_value value].freeze
PICKER_TIME_CONTROLS =
%w[TimePicker].freeze
PICKER_TIME_KEYS =
%w[value].freeze

Class Method Summary collapse

Class Method Details

.pack(value, context = nil) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/ruflet/server/wire_codec.rb', line 11

def pack(value, context = nil)
  case value
  when NilClass
    "\xc0".b
  when TrueClass
    "\xc3".b
  when FalseClass
    "\xc2".b
  when Integer
    pack_integer(value)
  when Float
    "\xcb".b + [value].pack("G")
  when String
    return pack_ext(1, normalize_date_ext(value)) if context == :date
    return pack_ext(2, normalize_time_ext(value)) if context == :time

    binary_string?(value) ? pack_binary(value) : pack_string(value)
  when Symbol
    pack_string(value.to_s)
  when Array
    pack_array(value, context)
  when Hash
    pack_map(value)
  else
    pack_string(value.to_s)
  end
end

.unpack(bytes) ⇒ Object



39
40
41
42
# File 'lib/ruflet/server/wire_codec.rb', line 39

def unpack(bytes)
  reader = ByteReader.new(bytes)
  read_value(reader)
end