如果这曾经存在过,它一定已经被抹杀了,因为最近的搜索出现了 nada。看起来有很多实现只能从 Javascript转储到 YAML 输出,但是很难找到同时支持转储和加载的实现。
有没有人在做这样的事情……或者需求太低了。
如果这曾经存在过,它一定已经被抹杀了,因为最近的搜索出现了 nada。看起来有很多实现只能从 Javascript转储到 YAML 输出,但是很难找到同时支持转储和加载的实现。
有没有人在做这样的事情……或者需求太低了。
只是在寻找相同的东西,这是一个基本的基于 Javascript 的 YAML 解析器,由Tj Holowaychuk在refactormycode.com上编写。我在这里复制它以确保它不会丢失,似乎 yaml.org 上的 JsYaml 链接已经中断了一段时间。还没有测试它。
;(function(){
YAML = {
valueOf: function(token) {
return eval('(' + token + ')')
},
tokenize: function(str) {
return str.match(/(---|true|false|null|#(.*)|\[(.*?)\]|\{(.*?)\}|[\w\-]+:|-(.+)|\d+\.\d+|\d+|\n+)/g)
},
strip: function(str) {
return str.replace(/^\s*|\s*$/, '')
},
parse: function(tokens) {
var token, list = /^-(.*)/, key = /^([\w\-]+):/, stack = {}
while (token = tokens.shift())
if (token[0] == '#' || token == '---' || token == "\n")
continue
else if (key.exec(token) && tokens[0] == "\n")
stack[RegExp.$1] = this.parse(tokens)
else if (key.exec(token))
stack[RegExp.$1] = this.valueOf(tokens.shift())
else if (list.exec(token))
(stack.constructor == Array ?
stack : (stack = [])).push(this.strip(RegExp.$1))
return stack
},
eval: function(str) {
return this.parse(this.tokenize(str))
}
}
})()
print(YAML.eval(readFile('config.yml')).toSource())
// config.yml
---
# just a comment
list: ['foo', 'bar']
hash: { foo: "bar", n: 1 }
lib:
- lib/cart.js
- lib/cart.foo.js
specs:
- spec/cart.spec.js
- spec/cart.foo.spec.js
# - Commented out
environments:
all:
options:
failuresOnly: true
verbose: false
我更新了这个问题以提供我自己研究过的另一个解决方案:https ://github.com/jeremyfa/yaml.js
它是Symfony YAML 组件(YAML 1.2) 的纯 javascript 端口,支持加载和转储。希望这可以帮助。
此处可能是较新版本的 js-yaml:
我不确定在哪里可以找到支持转储但不加载的“大量实现”——就 JSON 是 YAML 1.2 的适当子集而言,我想可能有很多这样的子集,但那个子集有助于YAML 对人类不是特别友好,尤其是对于复杂的数据结构。我发现的大多数链接都是依赖于 node.js 和/或仅提供解析器的 JS-YAML 的 github 分支。
Jeremy Faivre 在 bitbucket 上的yaml.js在独立的 javascript 中实现了 YAML 的转储和加载(我从相关 stackoverflow 问题的答案中找到了它)。它没有得到积极维护,但对于中等复杂的 YAML 和/或 javascript 对象似乎可以正常工作。
yaml-javascript伪装成转储程序和解析器。没试过。
看到这个问题:JavaScript YAML Parser,Diogo Costa 说:
没有可用的 javascript YAML 解析器满足我的需求,所以我开发了自己的:它可以在这里找到: http ://code.google.com/p/javascript-yaml-parser /