YAML(又名YAML)是否存在这样的事情?
如果这种情况一度存在,它必定已被删除,因为最新的搜索出现了虚无... 看起来有很多实现只能从Javascript 转储到YAML输出,但无法找到支持转储和加载的实现.
是否有人在做这样的事情......或者对此的要求太低了.
只是寻找相同的,这是一个由Tj Holowaychuk在refactormycode.com上编写的基于Javascript的基本YAML解析器.我在这里重复它以确保它没有丢失,看来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 Component(YAML 1.2)的纯javascript端口,支持加载和转储.希望这可以帮助.
可能是更新版本的js-yaml:
http://github.com/visionmedia/js-yaml