我正在编写一个解析YAML文件的Node.js应用程序。在某些情况下,我需要能够检索与值对应的行号。例如,如果YAML是
person:
username: jsmith
password: hunter2
我可能想要显示消息“第3行错误:密码错误”。
显然,这是一个微不足道的例子,但重点是YAML本身并没有错。
我一直在使用yamljs并且能够通过Object.defineProperty
方法将行号直接添加到对象,但是这不适用于字符串,所以如果我们有以下YAML
passwords:
- aG00dP@ssw0Rd
- hunter2
我无法为“hunter2”提供行号。
我的一些想法:
{ lineNumber, value }
对象中的所有值。这对我来说似乎很笨拙,因为我必须在所有事情上致电.value
。我真的不希望行号影响任何作用于该对象的下游代码。还有另一种我没想过的方法吗?我提到的任何方法是否真的可行,而我一直做错了?
答案 0 :(得分:0)
对于任何有兴趣的人,我最终将行号存储在数组/对象上,并将其放在字符串上。它并不理想,但试图以其他方式解决它的成本超过了收益。另外,我的用例可能会看到更多的数组/对象。
我在这里分叉了yamljs存储库:https://github.com/pumlhorse/yaml.js
修改:我遇到了另一个提到向String
添加属性的问题,并意识到这是解决我的问题的方法。我修改了上面的存储库以返回String对象,而不是原语,并提供了我需要的功能。