У меня есть большой хэш с вложенными массивами и хэшами. Я хотел бы просто распечатать его, чтобы он был «читабельным» для пользователя.
Я хотел бы, чтобы это было похоже на to_yaml - это довольно читабельно - но все еще слишком технологично.
В конечном счете, это будут конечные пользователи, которым нужно читать эти блоки данных, поэтому их нужно аккуратно отформатировать.
Какие-либо предложения?
ruby
ruby-on-rails-3
Адам О'Коннор
источник
источник
Ответы:
Используйте,
pp
если вам нужно встроенное решение и просто хотите разумные разрывы строк.Используйте awesome_print, если вы можете установить гем. (В зависимости от ваших пользователей, вы можете использовать
index:false
опцию, чтобы отключить отображение индексов массива.)источник
Если у вас есть JSON, я рекомендую,
JSON.pretty_generate(hash)
потому что он проще, чем awesome_print , отлично выглядит вpre
теге и позволяет легко копировать с веб-страницы. (См. Также: Как я могу «красиво» отформатировать вывод JSON в Ruby on Rails? )источник
puts JSON.pretty_generate(hash)
Другое решение, которое работает для меня лучше, чем
pp
илиawesome_print
:источник
Pry::ColorPrinter.pp(obj)
запись в стандартном формате, но может принимать дополнительные параметры, включая пункт назначения. НравитсяPry::ColorPrinter.pp(obj, a_logger)
Если у вас нет необычного действия с самоцветом, но есть JSON, эта строка CLI будет работать с хешем:
puts JSON.pretty_generate(my_hash).gsub(":", " =>")
источник
Используйте ответы выше, если вы печатаете для пользователей.
Если вы хотите распечатать его только для себя в консоли, я предлагаю использовать pry gem вместо irb. Помимо красивой печати, у pry также есть много других функций (проверьте Railscast ниже)
И проверьте этот Railscast:
http://railscasts.com/episodes/280-pry-with-rails
источник
Это легко сделать с помощью json, если вы доверяете своим ключам в здравом уме:
источник
Используя Pry, вам просто нужно добавить следующий код в ~ / .pryrc:
источник
Из всех драгоценных камней, которые я пробовал,
show_data
gem работал лучше всего для меня, теперь я широко использую его для регистрации хэшей params в Rails почти все времяисточник
Для больших вложенных хэшей этот скрипт может быть полезен для вас. Он печатает вложенный хеш в хорошем синтаксисе типа python с только отступами, чтобы его было легко скопировать.
Пример использования:
Возвращаемое значение - это число (3) всех значений конечного уровня вложенного хэша.
источник
Вот еще один подход с использованием json и rouge:
(разбирает ответ от например
RestClient
)источник
В рельсах
Если тебе надо
inspect
на объектах в Hashinspect
метод в ваших объектах так, как должны... тогда это прекрасно работает! (И чем лучше, тем больше и больше вложенный объект Hash.)
Например:
pretty_inspect
происходит от PrettyPrint , которая по умолчанию включает в себя rails. Таким образом, не нужно никаких драгоценных камней и не требуется преобразование в JSON.Не в рельсах
Если вы не в Rails или по какой-либо причине вышло из строя, попробуйте
require "pp"
сначала. Например:Полный пример
pretty_inspect
Пример большого старого хэша из моего проекта с отредактированным текстом для моего проверенного объекта:источник
В Rails массивы и хэши в Ruby имеют встроенные функции to_json. Я бы использовал JSON только потому, что он хорошо читается в веб-браузере, например, в Google Chrome.
При этом, если вы обеспокоены тем, что это выглядит слишком «технологично», вы, вероятно, должны написать свою собственную функцию, которая заменяет фигурные скобки и квадратные скобки в ваших хешах и массивах пробелами и другими символами.
Посмотрите функцию gsub для очень хорошего способа сделать это. Продолжайте играть с разными персонажами и разным количеством пробелов, пока не найдете что-то привлекательное. http://ruby-doc.org/core-1.9.3/String.html#method-i-gsub
источник
{"programming_language":{"ruby":{},"python":{}}}