Spec-Zone.ru › Ruby 3.3

класс Prism::Pack::Directive

Родитель:
Объект

Директива в языке шаблонов pack.

Константы

ENDIAN_DESCRIPTIONS

Описание различных типов порядка байтов.

SIGNED_DESCRIPTIONS

Описание различных типов знаковых представлений.

SIZE_DESCRIPTIONS

Описание различных типов размеров.

Атрибуты

endian[Ч]

Тип порядка байтов директивы.

length[Ч]

Длина этой директивы (используется для целых чисел).

length_type[Ч]

Тип длины этой директивы (используется для целых чисел).

signed[Ч]

Тип знакового представления директивы.

size[Ч]

Размер директивы.

source[Ч]

Кусок байтов исходной строки, который представляет эта директива.

type[Ч]

Тип директивы.

variant[Ч]

Символ, представляющий упаковку или распаковку.

version[Ч]

Символ, представляющий версию Ruby.

Публичные методы класса

new(version, variant, source, type, signed, endian, size, length_type, length) Показать исходный код
# 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

Инициализировать новую директиву заданными значениями.

Публичные методы экземпляра

describe() Показать исходный код
# 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API