2016-07-26 3 views
1

Array.inspect возвращает свой выход в плоской линии:Более красивые, с отступом, довольно-печать

aoa = [ [1,2,3], [4,5,6] ] 
puts aoa.inspect # => [[1, 2, 3], [4, 5, 6]] 

есть простой способ получить отступ выхода вместо этого? Точный формат (например, есть ли разрыв строки после первого [) для меня не важен. Я просто хотел бы, чтобы он был более читабельным.

Сравнить Perl:

DB<2> print Dumper([[1,2,3],[4,5,6]]) 
$VAR1 = [ 
      [ 
      1, 
      2, 
      3 
      ], 
      [ 
      4, 
      5, 
      6 
      ] 
     ]; 

Решение должно поддерживать хэшей, а также и обрабатывать другие вещи изящно.

+2

Те готовятся ответы будут вырезать и вставить свой код, а затем удалить все 'IRB (основной): 001: 0> '. Почему бы не спасти их от второго шага? –

+0

Спасибо, Младен, по какой-то причине я не нашел связанного с вами вопроса. Задача решена. – AnoE

+1

Вы должны написать «@Miaden», а не «Miadan», чтобы SO уведомил человека о том, что комментарий оставлен для них. –

ответ

5

Вы можете попробовать AwesomePrint драгоценный камень, который будет возвращен следующий по умолчанию (фактический выход окрашена) и настраивается:

aoa = [ [1,2,3], [4,5,6] ] 
#=> [ 
#  [0] [ 
#  [0] 1, 
#  [1] 2, 
#  [2] 3 
#  ], 
#  [1] [ 
#  [0] 4, 
#  [1] 5, 
#  [2] 6 
#  ] 
# ]   
+0

Я бы не установил драгоценный камень для такого простого, легкого и уже stdlib реализованного (http://ruby-doc.org/stdlib-2.0.0/libdoc/json/rdoc/JSON.html#method-i-pretty_generate). – siegy22

+0

Я использовал 'puts xxx.inspect' при отладке тестового кода; 'ap xxx' теперь отлично работает в среде Cucumber, которая уже довольно окрашена. Идти с этим ответом, но каждый может проверить связанный вопрос, что это дубликат. – AnoE

-1

Я думаю JSON.pretty_generate является то, что вы ищете.

require 'json' 
puts JSON.pretty_generate(["asdf", [1, 2, 3]]) 

выходы:

[ 
    "asdf", 
    [ 
    1, 
    2, 
    3 
    ] 
] 

и для хэшей:

puts JSON.pretty_generate({a: 1, b: 2, c: {x: 1234}}) 

выходы:

{ 
    "a": 1, 
    "b": 2, 
    "c": { 
    "x": 1234 
    } 
} 
+0

Посредством этого вы потеряете информацию. Вы потеряете различие между строковыми клавишами и хеш-ключами хэша. Это не может быть заменой инспекции. – sawa

+0

@sawa У вас действительно есть хеши, такие как '{a: 1," a "=> 2}'? Я думаю, что это хороший способ довольно печатать хэш, а также массивы. – siegy22

 Смежные вопросы

  • Нет связанных вопросов^_^