簡體   English   中英

如何在JavaScript中存儲已解析的YAML文件的行號?

[英]How can I store line numbers for a parsed YAML file in JavaScript?

我正在編寫一個解析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對象,而不是原語,並提供了我需要的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM