Форматирование prettyprint Рубина

Действительно ли возможно изменить ширину это prettyprint (require 'pp') использование, когда форматирование произведено? Например:

"mooth"=>["booth", "month", "mooch", "morth", "mouth", "mowth", "sooth", "tooth"]
"morth"=>["forth",
 "mirth",
 "month",
 "mooth",
 "morph",
 "mouth",
 "mowth",
 "north",
 "worth"]

Первое множество напечатано действующее, потому что оно соответствует в ширине столбца prettyprint, позволяет (79 знаков)... второе разделено на несколько линий, потому что оно не делает. Но я не могу найти метод для изменения колонки, на которой начинается это поведение.

pp зависит от PrettyPrint (у которого есть способы позволить различные ширины для буфера). Есть ли любой способ изменить ширину столбца по умолчанию для pp, не переписывая его с нуля (доступ PrettyPrint непосредственно)?

Поочередно, есть ли подобный рубиновый драгоценный камень, который обеспечивает эту функциональность?

43
задан Myrddin Emrys 21 January 2010 в 19:01
поделиться

1 ответ

#!/usr/bin/ruby1.8

require 'pp'
mooth = [
  "booth", "month", "mooch", "morth",
  "mouth", "mowth", "sooth", "tooth"
]
PP.pp(mooth, $>, 40)
# => ["booth",
# =>  "month",
# =>  "mooch",
# =>  "morth",
# =>  "mouth",
# =>  "mowth",
# =>  "sooth",
# =>  "tooth"]
PP.pp(mooth, $>, 79)
# => ["booth", "month", "mooch", "morth", "mouth", "mowth", "sooth", "tooth"]

Чтобы изменить по умолчанию с помощью патча обезьяны:

#!/usr/bin/ruby1.8

require 'pp'

class PP
  class << self
    alias_method :old_pp, :pp
    def pp(obj, out = $>, width = 40)
      old_pp(obj, out, width)
    end
  end
end

mooth = ["booth", "month", "mooch", "morth", "mouth", "mowth", "sooth", "tooth"]
pp(mooth)
# => ["booth",
# =>  "month",
# =>  "mooch",
# =>  "morth",
# =>  "mouth",
# =>  "mowth",
# =>  "sooth",
# =>  "tooth"]

Эти методы также работают в МРТ 1.9.3

55
ответ дан 26 November 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: