3

环境:ruby1.9.3,心理(任何版本)例如:

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 }
4

2 回答 2

4

Psych 支持这一点,尽管它一点也不简单。

我已经开始在我自己的问题中研究如何使用文字样式转储字符串

我最终设计了一个完整的解决方案来为特定对象设置各种样式,包括内联哈希和数组。

使用我的脚本,您的问题的解决方案是:

o = { 'hash' => StyledYAML.inline('name' => 'Steve', 'foo' => 'bar') }
StyledYAML.dump o, $stdout
于 2012-03-12T22:13:25.420 回答
0

表示的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]

希望有帮助,安德鲁!

于 2012-08-28T08:38:45.897 回答