gpt4 book ai didi

javascript - 如何在 JavaScript 中存储解析的 YAML 文件的行号?

转载 作者:行者123 更新时间:2023-11-28 06:09:54 24 4
gpt4 key购买 nike

我目前正在编写一个解析 YAML 文件的 Node.js 应用程序。在某些情况下,我需要能够检索与某个值对应的行号。例如,如果 YAML 是
人:
用户名: jsmith
密码:猎人2
我可能想显示消息“第 3 行错误:密码错误”。

显然,这是一个简单的示例,但重点是 YAML 本身没有任何问题。

我一直在使用yamljs并能够通过 Object.defineProperty 方法将行号直接添加到对象中,但这不适用于字符串,因此如果我们有以下 YAML
密码:
- aG00dP@ssw0Rd
- 猎人2
我无法给出“hunter2”的行号。

我的一些想法:

  • 将所有值装箱到 { lineNumber, value } 对象中。这对我来说似乎很笨重,因为我必须对所有内容调用 .value 。我真的不希望行号影响任何作用于对象的下游代码。
  • 存储值及其行号的哈希值。这是行不通的,因为据我所知,我无法区分重复字符串之间的区别(例如,如果“hunter2”进一步包含在文档中)
  • 扩展字符串来存储行号,但仍然像字符串一样。这看起来很理想,但我不知道这是否完全可能。我已经尝试过,但没有一种方法对我有用。

还有其他我没想到的方法吗?我提到的任何方法实际上是否可行,而我只是做错了?

最佳答案

对于任何感兴趣的人,我最终将行号存储在数组/对象上,并将其存储在字符串上。这并不理想,但尝试以其他方式解决它的成本超过了 yield 。另外,我的用例可能会看到更多的数组/对象。

我在这里 fork 了 yamljs 存储库:https://github.com/pumlhorse/yaml.js

编辑:我偶然发现另一个问题,其中提到向 String 添加属性,并意识到这是解决我的问题的方法。我修改了上面的存储库以返回 String 对象,而不是基元,并且提供了我需要的功能。

关于javascript - 如何在 JavaScript 中存储解析的 YAML 文件的行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36507847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com