¿Libre biblioteca JavaScript YAML que admite tanto volcado como carga? [duplicar]
-
06-07-2019 - |
Pregunta
Esta pregunta ya tiene una respuesta aquí:
- JavaScript YAML Parser 4 respuestas
¿Existe tal cosa para YAML (también conocido como YAML )?
Si esto existió alguna vez, debe haber sido borrado porque la última búsqueda arrojó nada. Parece que hay muchas implementaciones que vuelcan de Javascript a la salida de YAML solamente, pero tienen problemas para encontrar una implementación que admita tanto volcado como carga.
¿Alguien está trabajando en tal cosa ... o la demanda es simplemente demasiado baja para esto?
Solución
Posiblemente la versión más nueva de js-yaml aquí:
Otros consejos
Estaba buscando lo mismo, aquí hay un analizador YAML basado en Javascript escrito por Tj Holowaychuk en refactormycode.com . Lo estoy duplicando aquí para asegurar que no se pierda, parece que el enlace JsYaml en yaml.org se ha roto por un tiempo. No lo he probado todavía.
;(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
Actualizo esta pregunta para dar otra solución en la que trabajé: https://github.com/jeremyfa /yaml.js
Es un puerto javascript puro de Componente Symfony YAML (YAML 1.2) y admite carga y dumping. Espero que esto ayude.
No estoy seguro de dónde están las "muchas implementaciones" se encuentra ese volcado de soporte pero no la carga; en la medida en que JSON es un subconjunto adecuado de YAML 1.2, supongo que podría haber muchos de esos, pero ese subconjunto hace que YAML no sea particularmente amigable para los humanos, especialmente para datos complejos estructuras La mayoría de los enlaces que he encontrado son a github forks de JS-YAML que dependen de node.js y / o solo proporcionan analizadores.
Jeremy Faivre's yaml.js en bitbucket implementa tanto el volcado como la carga de YAML en JavaScript independiente (lo encontré en una respuesta a una pregunta relacionada con stackoverflow ). No se mantiene activamente, pero parece funcionar bien para objetos YAML y / o javascript moderadamente complejos.
yaml-javascript pretende ser dumper y parser. Nunca lo intenté.
También existe este javascript-yaml- analizador /
Vea esta pregunta: JavaScript YAML Parser , Diogo Costa dice:
Ninguno de los analizadores javascript YAML disponibles satisfizo mis necesidades, así que desarrollé el mío: está disponible aquí: http://code.google.com/p/javascript-yaml-parser/