环境: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 }
答案 0 :(得分:4)
Psych支持这一点,虽然它根本不是直截了当的。
我已经开始在my own question on how to dump strings using literal style进行研究。
我最终为特定对象设计了a complete solution for setting various styles,包括内联哈希和数组。
使用我的脚本,您的问题的解决方案将是:
o = { 'hash' => StyledYAML.inline('name' => 'Steve', 'foo' => 'bar') }
StyledYAML.dump o, $stdout
答案 1 :(得分:0)
representable gem以方便的OOP风格提供此功能。
考虑到你有一个模型用户:
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]
希望有帮助,安德鲁!