如何在Haskell中编写内联YAML(流式)?

时间:2015-12-26 19:46:44

标签: haskell yaml pretty-print aeson

我使用Data.Yaml以人类可读的格式存储一些数据。但是,数据的某些部分是数字列表或矩阵。 YAML输出block sequence style非常详细:

- - 1
  - 2
  - 3
- - 4
  - 5

相反,我希望这些部分能够在flow sequence style中进行编码,就像

一样
[[1,2,3],[4,5]]

有办法怎么做?

1 个答案:

答案 0 :(得分:11)

不幸的是没有。 yaml使用libyaml。虽然您想使用flow sequence style,但current implementation使用YAML_ANY_SEQUENCE_STYLE(0)代替YAML_FLOW_SEQUENCE_STYLE(2),因此使用YAML_BLOCK_SEQUENCE_STYLE(1,但是发射器仅检查与YAML_FLOW_SEQUENCE_STYLE)的相等性。

这是硬编码到Haskell中的toEventRaw包装器中。应该可以编写使用特殊encodeWith的{​​{1}}并采用其他选项,但目前情况并非如此。 你可以open a feature request但是feature request

修改:如果在toEventRawWith中用Data.Yaml.encode替换"[[1,2,3], [4,5]]"的所有0 -- YAML_ANY_SEQUENCE_STYLE2 -- YAML_FLOW_SEQUENCE_STYLE将返回Text/Libyaml.hs。因此,您需要在本地修补库,或者询问该功能请求。