Est-il possible de changer la largeur de prettyprint (require 'pp'
) utilise lors du formatage de la sortie? Par exemple:
"mooth"=>["booth", "month", "mooch", "morth", "mouth", "mowth", "sooth", "tooth"]
"morth"=>["forth",
"mirth",
"month",
"mooth",
"morph",
"mouth",
"mowth",
"north",
"worth"]
Le premier tableau est imprimé en ligne car il tient dans la largeur de colonne que prettyprint autorise (79 caractères) ... le second est divisé en plusieurs lignes, car il ne le fait pas. Mais je ne trouve aucune méthode pour modifier la colonne sur laquelle ce comportement démarre.
pp
dépend de PrettyPrint
(qui permet d'autoriser différentes largeurs pour le tampon). Existe-t-il un moyen de modifier la largeur de colonne par défaut pour pp
, sans la réécrire à partir de zéro (accéder directement à PrettyPrint
)?
Sinon, existe-t-il un Ruby gem qui fournit cette fonctionnalité?
#!/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"]
Pour modifier la valeur par défaut avec un patch singe:
#!/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"]
Ces méthodes fonctionnent également en IRM 1.9.3
Trouvé "ap" aka "Awesome_Print" également utile de git-repo
Code utilisé pour tester pp et ap:
require 'pp'
require 'ap' #requires gem install awesome_print
data = [false, 42, %w{fourty two}, {:now => Time.now, :class => Time.now.class, :distance => 42e42}]
puts "Data displayed using pp command"
pp data
puts "Data displayed using ap command"
ap data
O/P de pp vs ap:
Data displayed using pp command
[false,
42,
["fourty", "two"],
{:now=>2015-09-29 22:39:13 +0800, :class=>Time, :distance=>4.2e+43}]
Data displayed using ap command
[
[0] false,
[1] 42,
[2] [
[0] "fourty",
[1] "two"
],
[3] {
:now => 2015-09-29 22:39:13 +0800,
:class => Time < Object,
:distance => 4.2e+43
}
]
Référence: