class Prism::Pack::Directive
A directive in the pack template language.
Constants
- ENDIAN_DESCRIPTIONS
The descriptions of the various types of endianness.
- SIGNED_DESCRIPTIONS
The descriptions of the various types of signedness.
- SIZE_DESCRIPTIONS
The descriptions of the various types of sizes.
Attributes
endian[R]
The type of endianness of the directive.
length[R]
The length of this directive (used for integers).
length_type[R]
The length type of this directive (used for integers).
signed[R]
The type of signedness of the directive.
size[R]
The size of the directive.
source[R]
A byteslice of the source string that this directive represents.
type[R]
The type of the directive.
variant[R]
A symbol representing whether or not we are packing or unpacking.
version[R]
A symbol representing the version of Ruby.
Public Class Methods
new(version, variant, source, type, signed, endian, size, length_type, length)
click to toggle source
Initialize a new directive with the given values.
# File 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
Public Instance Methods
describe()
click to toggle source
Provide a human-readable description of the directive.
# File 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