strings/unpack_offsets_parens.rb

tests/_examples/strings/unpack_offsets_parens.rb in the metorex repository.

# `unpack` reads from a byte offset when it is given one, and the offset must
# name a place inside the string.
held = "ZZABCD"
p(held.unpack1("x3C", offset: 2))
p(held.unpack("a4", offset: 2))
p("ZZZZaG9nZWZ1Z2E=".unpack1("m", offset: 4))
p("؈".unpack("CC"))
p("؈".unpack1("C", offset: 1))
p("a".unpack1("C", offset: 1))

begin
  "a".unpack1("C", offset: -1)
rescue ArgumentError => trouble
  p(trouble.message)
end

begin
  "a".unpack1("C", offset: 2)
rescue ArgumentError => trouble
  p(trouble.message)
end

Output:

68
["ABCD"]
"hogefuga"
[216, 136]
136
nil
"offset can't be negative"
"offset outside of string"