module Paquito::Struct::ClassMethods

Public Instance Methods

from_pack(packed) click to toggle source
# File lib/paquito/struct.rb, line 62
def from_pack(packed)
  values = extract_packed_values(packed, as_hash: @__kw_init__)

  if @__kw_init__
    new(**values)
  else
    new(*values)
  end
end
pack_digest() click to toggle source
# File lib/paquito/struct.rb, line 72
def pack_digest
  @pack_digest ||= ::Paquito::Struct.digest(members)
end

Private Instance Methods

extract_packed_values(packed, as_hash:) click to toggle source
# File lib/paquito/struct.rb, line 78
def extract_packed_values(packed, as_hash:)
  digest, *values = packed
  if pack_digest != digest
    raise(VersionMismatchError, "#{self} digests do not match")
  end

  as_hash ? members.zip(values).to_h : values
end