класс Prism::Pack::Directive
Директива в шаблоне языка pack.
Константы
- ENDIAN_DESCRIPTIONS
-
Описание различных типов порядка байтов.
- SIGNED_DESCRIPTIONS
-
Описание различных типов знаковых чисел.
- SIZE_DESCRIPTIONS
-
Описание различных типов размеров.
Атрибуты
Тип порядка байтов директивы.
Длина этой директивы (используется для целых чисел).
Тип длины этой директивы (используется для целых чисел).
Тип знакового числа директивы.
Размер директивы.
Участок байтов строки-источника, который представляет эта директива.
Тип директивы.
Символ, представляющий упаковку или распаковку.
Символ, представляющий версию Ruby.
Открытые методы класса
Исходный код
# 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
Инициализирует новую директиву заданными значениями.
Открытые методы экземпляра
Исходный код
# 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 Предоставляет удобочитаемое описание директивы.
Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.