Class
A directive in the pack template language.
Constants
The descriptions of the various types of endianness.
The descriptions of the various types of signedness.
The descriptions of the various types of sizes.
Attributes
Read
A symbol representing the version of Ruby.
Read
A symbol representing whether or not we are packing or unpacking.
Read
A byteslice of the source string that this directive represents.
Read
The type of the directive.
Read
The type of signedness of the directive.
Read
The type of endianness of the directive.
Read
The size of the directive.
Read
The length type of this directive (used for integers).
Read
The length of this directive (used for integers).
Class Methods
lib/prism/pack.rb
View on GitHub
# File tmp/rubies/ruby-3.3.0/lib/prism/pack.rb, line 88
def initialize(version, variant, source, type, signed, endian, size, length_type, length)
@version = version
@variant = variant
@source = source
@type = type
@signed = signed
@endian = endian
@size = size
@length_type = length_type
@length = length
end
Initialize a new directive with the given values.
Instance Methods
#
lib/prism/pack.rb
View on GitHub
# File tmp/rubies/ruby-3.3.0/lib/prism/pack.rb, line 130
def describe
case type
when SPACE
"whitespace"
when COMMENT
"comment"
when INTEGER
if size == SIZE_8
base = "#{SIGNED_DESCRIPTIONS[signed]} #{SIZE_DESCRIPTIONS[size]} integer"
else
base = "#{SIGNED_DESCRIPTIONS[signed]} #{SIZE_DESCRIPTIONS[size]} #{ENDIAN_DESCRIPTIONS[endian]} integer"
end
case length_type
when LENGTH_FIXED
if length > 1
base + ", x#{length}"
else
base
end
when LENGTH_MAX
base + ", as many as possible"
end
when UTF8
"UTF-8 character"
when BER
"BER-compressed integer"
when FLOAT
"#{SIZE_DESCRIPTIONS[size]} #{ENDIAN_DESCRIPTIONS[endian]} float"
when STRING_SPACE_PADDED
"arbitrary binary string (space padded)"
when STRING_NULL_PADDED
"arbitrary binary string (null padded, count is width)"
when STRING_NULL_TERMINATED
"arbitrary binary string (null padded, count is width), except that null is added with *"
when STRING_MSB
"bit string (MSB first)"
when STRING_LSB
"bit string (LSB first)"
when STRING_HEX_HIGH
"hex string (high nibble first)"
when STRING_HEX_LOW
"hex string (low nibble first)"
when STRING_UU
"UU-encoded string"
when STRING_MIME
"quoted printable, MIME encoding"
when STRING_BASE64
"base64 encoded string"
when STRING_FIXED
"pointer to a structure (fixed-length string)"
when STRING_POINTER
"pointer to a null-terminated string"
when MOVE
"move to absolute position"
when BACK
"back up a byte"
when NULL
"null byte"
else
raise
end
end
Provide a human-readable description of the directive.