Libreria YAML Javascript pura che supporta sia il dump che il caricamento? [duplicare]
-
06-07-2019 - |
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.
Soluzione
Forse la versione più recente di js-yaml qui:
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/