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

麦迪金

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

显然,这是一个琐碎的示例,但重点是YAML本身没有错。

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

我的一些想法:

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

我有没有想过的另一种方式?我提到的任何方法实际上可行,而我做错了吗?

麦迪金

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

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

编辑:我碰到另一个提到添加属性的问题,String并且意识到这是我的问题的解决方案。我修改了上面的存储库以返回String对象,而不是原始对象,并且提供了我需要的功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章