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
The type of endianness of the directive.
The length of this directive (used for integers).
The length type of this directive (used for integers).
The type of signedness of the directive.
The size of the directive.
A byteslice of the source string that this directive represents.
The type of the directive.
A symbol representing whether or not we are packing or unpacking.
A symbol representing the version of Ruby.
Public Class Methods
Source
# File lib/prism/pack.rb, line 89 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.
Public Instance Methods
Source
# File lib/prism/pack.rb, line 131 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" else raise 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.