根据 Phrogz 和我对这个问题的回答,与 Ruby 1.9 一起使用的 yaml 库似乎只允许几个选项:、、、、indentation
(并设置为)。我想使用官方 YAML 格式允许的其他选项,包括但不限于. 是否可以通过小技巧激活其他选项,或者是否有 Ruby 1.9 的替代 yaml 库允许其他选项?为什么 yaml 库不提供其他选项?line_width
canonical
line_wrap
line_width
-1
use_block
问问题
322 次
1 回答
0
作为临时解决方案,我找到了 ya2yaml。不过,这有一些问题。
- 它没有阅读能力。它只用于写作。
- 它不会完全输出带有
!ruby/class ...
符号的不受欢迎的 Ruby 类。在 yaml gem 中,完全使用了这种表示法,以便在 ruby-yaml-ruby 往返过程中保留 Ruby 类。 - 它使用
!ruby/symbol ...
符号表示法,与:...
yaml gem 中使用的表示法相比,它看起来很长。 - 它使用
? ... \n:
yaml 语法作为哈希键,与使用 yaml gem 的更紧凑的哈希表示法相比,它看起来很长。
到目前为止,问题 2 对我来说没什么大不了的,所以我通过以下方式使用 yaml 和 ya2yaml gem 的组合来克服问题 1、3、4:
require "yaml" # For reading.
require "ya2yaml" # For writing.
class Object
def to_yaml # Method for writing in yaml
ya2yaml.
# Put hash key on a single line if it is a symbol
gsub(/^(\s*)\? !ruby\/symbol (\S+)\s+/, '\1:\2').
# Use symbol literal
gsub(/(?<=\s)!ruby\/symbol /, ':')
end
end
于 2012-10-03T18:12:43.587 回答