1

我有以下函数,当通过 dhall-to-yaml 处理时,它的输出用双引号括起来,但注入记录中的静态字符串没有用引号括起来,我怎样才能控制用双引号括起来的东西和不括起来的东西?

let base64 = \(encode : Text) -> "!Base64 ${encode}"
let john : Profile =
    { person =
        { name = base64 "test"
        , age  = 67
        }
    , address =
        { country = "United States"
        , state   = "Pennsylvania"
        , city    = "Philadelphia"
        }
    }

输出

address:
  city: Philadelphia
  country: United States
  state: Pennsylvania
person:
  age: 67
  name: "!Base64 test"

期望的输出:

address:
  city: Philadelphia
  country: United States
  state: Pennsylvania
person:
  age: 67
  name: !Base64 test
4

1 回答 1

2

目前,如果字符串字段具有特殊字符,则dhall-to-yamlanddhall-to-yaml-ng命令会引用它们,以确保 DhallText值在转换为 YAML 时只能被解释为纯数据。此外,如果您需要未转义的文本(例如用于发出标签),目前还没有省略引用行为的选项,也没有指定标签的标准方法。

您可能想在https://github.com/dhall-lang/dhall-haskell/issues上打开一个问题来讨论解决问题的可能方法,因为我想您不是唯一一个想在其中发出标签的人YAML 输出。

于 2020-06-01T01:46:03.463 回答