Domanda

    

Questa domanda ha già una risposta qui:

    
            
  •              Parser YAML JavaScript                                      4 risposte                          
  •     
    

Esiste una cosa del genere per YAML (aka YAML )?

Se esisteva una volta, doveva essere stato cancellato perché l'ultima ricerca ha mostrato nada. Sembra che ci siano molte implementazioni che eseguono il dump solo da Javascript a YAML, ma che riscontrano problemi nel trovare un'implementazione che supporti sia il dump che il caricamento.

Qualcuno sta lavorando su una cosa del genere ... o la domanda è semplicemente troppo bassa per questo.

È stato utile?

Soluzione

Forse la versione più recente di js-yaml qui:

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

Altri suggerimenti

Cercavo lo stesso, ecco un parser YAML basato su Javascript scritto da Tj Holowaychuk sopra a refactormycode.com . Lo sto duplicando qui per assicurarmi che non sia perso, sembra che il link JsYaml su yaml.org sia stato interrotto per un po '. Non l'ho ancora testato.

;(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

Aggiornamento questa domanda per fornire un'altra soluzione su cui io stesso ho lavorato: https://github.com/jeremyfa /yaml.js

È una porta javascript pura di Componente YAML di Symfony (YAML 1.2) e supporta sia il caricamento che dumping. Spero che questo aiuti.

Non sono sicuro di dove siano le "numerose implementazioni" questo dump del supporto ma non il carico si trovano - nella misura in cui JSON è un sottoinsieme corretto di YAML 1.2, immagino che potrebbero essercene molti, ma quel sottoinsieme rende YAML non particolarmente adatto all'uomo, specialmente per dati complessi strutture. La maggior parte dei collegamenti che ho trovato sono github forks di JS-YAML che dipendono da node.js e / o forniscono solo parser.

Jeremy Faivre yaml.js su bitbucket implementa sia il dump che il caricamento di YAML in JavaScript indipendente (l'ho trovato da una risposta a una domanda stackoverflow correlata ). Non è gestito attivamente, ma sembra funzionare bene per oggetti YAML e / o javascript moderatamente complessi.

yaml-javascript finge di essere sia dumper che parser. Mai provato.

C'è anche questo javascript-yaml- parser /

Vedi questa domanda: JavaScript YAML Parser , Diogo Costa dice:
Nessuno dei parser YAML javascript disponibili ha soddisfatto le mie esigenze, quindi ho sviluppato i miei: È disponibile qui: http://code.google.com/p/javascript-yaml-parser/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top