我有一个大哈希嵌套数组和哈希。我想简单地打印出来,所以它'可读'的用户。
我希望它有点像to_yaml -这是相当可读的-但仍然太高科技看起来。
最终需要读取这些数据块的将是最终用户,因此它们需要被清晰地格式化。
有什么建议吗?
我有一个大哈希嵌套数组和哈希。我想简单地打印出来,所以它'可读'的用户。
我希望它有点像to_yaml -这是相当可读的-但仍然太高科技看起来。
最终需要读取这些数据块的将是最终用户,因此它们需要被清晰地格式化。
有什么建议吗?
当前回答
另一个解决方案比pp或awesome_print更适合我:
require 'pry' # must install the gem... but you ALWAYS want pry installed anyways
Pry::ColorPrinter.pp(obj)
其他回答
在Rails中,Ruby中的数组和哈希有内置的to_json函数。我会使用JSON,因为它在web浏览器中是非常可读的,例如谷歌Chrome。
也就是说,如果你担心它看起来太“科技”,你可能应该写自己的函数,用空格和其他字符替换散列和数组中的花括号和方括号。
在gsub函数中找到一个很好的方法。继续使用不同的字符和不同数量的空白,直到你找到一些看起来有吸引力的东西。http://ruby-doc.org/core-1.9.3/String.html#method-i-gsub
如果要打印给用户,请使用上面的答案。
如果你只想在控制台为自己打印,我建议使用撬宝石而不是irb。除了漂亮的印刷,撬还有很多其他功能(查看下面的railscast)
宝石安装撬
看看这个铁路广播:
http://railscasts.com/episodes/280-pry-with-rails
require 'pp'
pp my_hash
如果你需要一个内置的解决方案,只是想要合理的换行,可以使用pp。
如果可以安装gem,请使用awesome_print。(取决于你的用户,你可能希望使用index:false选项来关闭显示数组下标。)
使用Pry,你只需要添加以下代码到你的~/.pryrc:
require "awesome_print"
AwesomePrint.pry!
如果你相信你的键是正常的,json很容易做到:
JSON.pretty_generate(a: 1, 2 => 3, 3 => nil).
gsub(": null", ": nil").
gsub(/(^\s*)"([a-zA-Z][a-zA-Z\d_]*)":/, "\\1\\2:"). # "foo": 1 -> foo: 1
gsub(/(^\s*)(".*?"):/, "\\1\\2 =>") # "123": 1 -> "123" => 1
{
a: 1,
"2" => 3,
"3" => nil
}