Ответ 1
Возможно, более новая версия js-yaml здесь:
Существует ли такая вещь для YAML (aka YAML)?
Если бы это существовало в одно время, оно, должно быть, было уничтожено, потому что последний поиск оказался нада. Похоже, что существует множество реализаций, которые дамп из Javascript только для вывода YAML, но проблема с поиском реализации, которая поддерживает как дамп, так и нагрузку.
Кто-нибудь работает над такой штукой... или это требование слишком мало для этого.
Возможно, более новая версия js-yaml здесь:
Было просто искать то же самое, здесь базовый Javascript-основанный парсер YAML, написанный Tj Holowaychuk на refactormycode.com. Я дублирую его здесь, чтобы убедиться, что он не потерян, похоже, что ссылка JsYaml на yaml.org была повреждена. Еще не проверял.
;(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
Это чистый javascript-порт Symfony YAML Component (YAML 1.2) и поддерживает как загрузку, так и сброс. Надеюсь, это поможет.
Я не знаю, где найти "множество реализаций", поддерживающих дамп, но не загрузку, - в той мере, в какой JSON является подходящим подмножеством YAML 1.2, я думаю, может быть много таких, но это подмножество делает для YAML, что не является особым человеком, особенно для сложных структур данных. Большинство ссылок, которые я нашел, представляют собой github-вилки JS-YAML, которые зависят от node.js и/или предоставляют только парсеры.
Jeremy Faivre yaml.js на bitbucket реализует как дамп, так и нагрузку YAML в автономном javascript (я нашел его из ответьте на связанный с ним вопрос о стеке). Он не поддерживается активно, но, похоже, работает отлично для умеренно сложных объектов YAML и/или javascript.
yaml-javascript претендует на то, чтобы быть как самосвалом, так и парсером. Никогда не пробовал.
Также этот javascript-yaml-parser/
Смотрите этот вопрос: JavaScript YAML Parser, Diogo Costa говорит:
Ни один из доступных javascript-аналитиков YAML не удовлетворил мои потребности, поэтому я разработал свой собственный: он доступен здесь: http://code.google.com/p/javascript-yaml-parser/