Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js yaml是否可以进行行号映射?_Javascript_Yaml - Fatal编程技术网

Javascript js yaml是否可以进行行号映射?

Javascript js yaml是否可以进行行号映射?,javascript,yaml,Javascript,Yaml,假设我有这样一个YAML文档: valid_true: - true - True - TRUE valid_false: - false - False - FALSE 我想以一个对象结束,该对象将解析的对象键与定义它们的YAML文档中的行号相关联。这样的输出可能会起作用: { "valid_true": { "value": [ {"value": true, line: 2}, {"value": true, line: 3}

假设我有这样一个YAML文档:

valid_true:
  - true
  - True
  - TRUE

valid_false:
  - false
  - False
  - FALSE
我想以一个对象结束,该对象将解析的对象键与定义它们的YAML文档中的行号相关联。这样的输出可能会起作用:

{
  "valid_true": {
    "value": [
      {"value": true, line: 2},
      {"value": true, line: 3},
      {"value": true, line: 4}
    ],
    "line": 1
  },
  "valid_false": {
    "value": [
      {"value": false, line: 7},
      {"value": false, line: 8},
      {"value": false, line: 9}
    ],
    "line": 6
  }
}

这个图书馆能做到这一点吗?或者我需要分叉/修改它吗?

许多YAML库可以分多个阶段完成加载任务:

  • 将文档源扫描为令牌
  • 将标记组合成节点(标记的标量、序列、映射)
  • 从节点构造特定于语言的对象
  • 在最后一步之后,您查找的线路信息通常不再可用。只要您可以通过影响对象的构造或在公开的节点结构上进行构建来钩住加载任务,那么您想要做的事情就相对容易

    例如,PyYAML就是这样的情况,js YAML最初基于YAML 1.1装载机/卸载机。但是从那时起js yaml已经被重写以支持yaml 1.2,并且,似乎没有任何选项可以“干扰”上一段中所描述的内容

    您可能希望查看库的较旧(基于PyYAML)版本,看看它们的API是否更灵活。我还没有看过实现的细节,但我的印象是,为了提高速度,重写放弃了灵活性(这本身并不是一个糟糕的决定,但对您这样的用例并没有帮助)

    如果您不受javascript的限制,那么您可能希望查看或我自己的(对于Python)。这些是YAML 1.2装载机/自卸车,我确信您可以按照需要连接到装载过程中


    ruamel.yaml
    在默认往返模式下使用时,已将行/列信息分配给由yaml映射和序列构造的对象,这可以相对容易地扩展到往返中使用的可用特殊标量类型(包括布尔型在内的大多数类型)。或者,如果您的输入保证在键后有空格和/或注释行(如您的示例所示),则当然可以根据列表的开头计算项目的实际行号。

    奇怪的格式,因为JSON中的配置将是
    {“valid\u true”:[“true”,“true”,“true”],“valid\u false”:[“false”、“false”、“false”]}
    也不确定“这个库”应该引用什么。(编辑-oh js yaml,这在我没有读过的标题中提到)