Spec-Zone.ru › Ruby 3.4

класс PP

Родитель:
PrettyPrint
Включенные модули:
PP::PPMethods

Форматировщик для объектов Ruby.

Что делает PP

Стандартный вывод с помощью p возвращает следующее:

#<PP:0x81fedf0 @genspace=#<Proc:0x81feda0>, @group_queue=#<PrettyPrint::GroupQueue:0x81fed3c @queue=[[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], []]>, @buffer=[], @newline="\n", @group_stack=[#<PrettyPrint::Group:0x81fed78 @breakables=[], @depth=0, @break=false>], @buffer_width=0, @indent=0, @maxwidth=79, @output_width=2, @output=#<IO:0x8114ee4>>

Отформатированный вывод возвращает следующее:

#<PP:0x81fedf0
 @buffer=[],
 @buffer_width=0,
 @genspace=#<Proc:0x81feda0>,
 @group_queue=
  #<PrettyPrint::GroupQueue:0x81fed3c
   @queue=
    [[#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>],
     []]>,
 @group_stack=
  [#<PrettyPrint::Group:0x81fed78 @break=false, @breakables=[], @depth=0>],
 @indent=0,
 @maxwidth=79,
 @newline="\n",
 @output=#<IO:0x8114ee4>,
 @output_width=2>

Использование

pp(obj)             #=> obj
pp obj              #=> obj
pp(obj1, obj2, ...) #=> [obj1, obj2, ...]
pp()                #=> nil

Вывод obj(s) в $> в отформатированном виде.

Возвращает obj(s).

Настройка вывода

Для определения настраиваемой функции форматирования для ваших классов, переопределите метод pretty_print(pp) в классе. Обратите внимание, что require 'pp' необходимо перед переопределением pretty_print(pp).

pretty_print принимает аргумент pp, который является экземпляром класса PP. Метод использует text, breakable, nest, group и pp для вывода объекта.

Форматирование JSON

Для форматированного вывода JSON см. JSON#pretty_generate.

Автор

Tanaka Akira <akr@fsij.org>

Константы

VERSION

Строка версии

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

pp (obj, out=$>, width=width_for(out))
Исходный код
# File lib/pp.rb, line 96
def PP.pp(obj, out=$>, width=width_for(out))
  q = new(out, width)
  q.guard_inspect_key {q.pp obj}
  q.flush
  #$pp = q
  out << "\n"
end

Выводит obj в out в отформатированном виде шириной width столбцов.

Если out опущено, используется $>. Если width опущено, используется ширина out (см. width_for).

PP.pp возвращает out.

sharing_detection ()
Исходный код
# File lib/pp.rb, line 125
def sharing_detection
  Ractor.current[:pp_sharing_detection]
end

Возвращает флаг обнаружения совместного использования в виде булевого значения. По умолчанию он равен false (nil).

sharing_detection= (b)
Исходный код
# File lib/pp.rb, line 129
def sharing_detection=(b)
  Ractor.current[:pp_sharing_detection] = b
end

Устанавливает флаг обнаружения совместного использования на значение b.

singleline_pp (obj, out=$>)
Исходный код
# File lib/pp.rb, line 108
def PP.singleline_pp(obj, out=$>)
  q = SingleLine.new(out)
  q.guard_inspect_key {q.pp obj}
  q.flush
  out
end

Выводит obj в out как PP.pp, но без отступов и новой строки.

PP.singleline_pp возвращает out.

width_for (out)
Исходный код
# File lib/pp.rb, line 79
def PP.width_for(out)
  begin
    require 'io/console'
    _, width = out.winsize
  rescue LoadError, NoMethodError, SystemCallError
  end
  (width || ENV['COLUMNS']&.to_i&.nonzero? || 80) - 1
end

Возвращает используемую ширину для out. Как ширина out:

  1. Если out назначен устройству tty, используется его ширина.

  2. В противном случае, или если невозможно получить значение, предполагается, что переменная среды COLUMN установлена на ширину.

  3. Если COLUMN не установлено на ненулевое число, предполагается значение 80.

И, наконец, возвращается указанное значение ширины минус 1.

  • Эта -1 необходима для командной строки Windows, которая перемещает курсор на следующую строку, если достигает последнего столбца.

Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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