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?

¿Fue útil?

Solución

Posiblemente la versión más nueva de js-yaml aquí:

http://github.com/visionmedia/js-yaml

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/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top