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