ruby 如何强制to_yaml以文本块样式输出长字符串?

vc9ivgsu  于 2023-01-25  发布在  Ruby
关注(0)|答案(1)|浏览(117)

我希望在YAML中以文本块样式(以>|开头的块)打印散列中的长字符串值,而不是作为行内字符串打印。有没有办法在调用#to_yaml时强制这样做?
文字块样式示例:

---
this: |
  Foo
  Bar
mitkmikd

mitkmikd1#

是的,当对包含长字符串值的哈希调用#to_yaml时,有一种方法可以强制文本块样式。您可以使用传递给#to_yaml的选项哈希中的:fold键来指定这些字符串值应该折叠到文本块中。
例如,下面的代码将包含长字符串值的哈希转换为文本块中包含该字符串值的YAML:

require 'yaml'

my_hash = { long_string: "This is a very long string that I want to display in a literal block in my YAML output" }

puts my_hash.to_yaml(:indentation => 2, :fold => ">")

这会将YAML输出为:

---
long_string: >
  This is a very long string that I want to display in a literal block in my YAML output

您也可以使用|而不是〉来获取以开头的块|。

相关问题