有没有一种方法可以告诉 Ruby 中的 Psych 库使用内联模式?

3

环境:ruby1.9.3,psych(任意版本) 例如:

o = { 'hash' => { 'name' => 'Steve', 'foo' => 'bar' } } 
 => {"hash"=>{"name"=>"Steve", "foo"=>"bar"}} 

#is there a inline option?
puts Psych.dump(o,{:inline =>true})

实际结果:

---
hash:
  name: Steve
  foo: bar

期望输出:

--- 
hash: { name: Steve, foo: bar }

因为我的哈希表非常类似于表格数据,所以我想要更清晰地查看它并节省显示器空间。 - hey mike
1
我猜你就没那么幸运了。但是你可以将它写成 CSV 或其他格式,保存到一个单独的文件中进行检查。 - Niklas B.
谢谢。实际上我有一个具有分层哈希和数组结构的对象。我想将其转储为一种文本格式(如YAML)。稍后再将其作为Ruby数据加载。 - hey mike
2
为什么不将其保存为YAML格式,并编写一个小的Ruby脚本来解析和格式化它,以便您可以轻松地检查它?如果不是秒就是分钟内就能完成。 - Niklas B.
@NiklasB:抱歉,我是 Ruby 的新手。你能给个示例代码吗?非常感谢。 :D - hey mike
显示剩余2条评论
2个回答

4

你好,非常抱歉。如何在我的Rails应用程序中包含styled_yaml.rb?谢谢。 - hey mike
将其放在某个地方(例如“lib/”),然后要求它。 - mislav

0

representable gem以便捷的面向对象方式提供了这个功能。

假设您有一个名为User的模型:

user.name => "Andrew"
user.age => "over 18"

现在,您需要定义一个表现器模块来呈现/解析用户实例。

require 'representable/yaml'

module UserRepresenter
  include Representable::YAML

  collection :hash, :style => :flow

  def hash
    [name, age]
  end
end

在定义好YAML文档之后,你只需要扩展用户实例并将其呈现出来即可。

user.extend(UserRepresenter).to_yaml
#=> ---
hash: [Andrew, over 18]

希望这能帮到你,安德鲁!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接