2015-12-26 29 views
2

我正在使用Data.Yaml以人類可讀的格式存儲一些數據。但是,數據的某些部分是數字列表或矩陣。在YAML輸出,block sequence style,相當冗長:如何在Haskell中編寫內聯YAML(流式)?

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

相反,我想這些部件在flow sequence style進行編碼,就像

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

有沒有辦法如何做到這一點?

+0

你想讓你生成的YAML包含haskell列表嗎? – rampion

+2

@rampion:可能是_flow sequence style_列表,而不是當前的_block sequence style_列表。 – Zeta

回答

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,它使用特殊的toEventRawWith並採取其他選項,但目前情況並非如此。 你可能open a feature request,然而,有一個feature request

編輯:事實上,Data.Yaml.encode將返回"[[1,2,3], [4,5]]"如果一個替代與2 -- YAML_FLOW_SEQUENCE_STYLE0 -- YAML_ANY_SEQUENCE_STYLE所有出現的Text/Libyaml.hs。所以你要麼需要在本地修補庫,要麼提問功能請求。