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 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 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