Skip to content

Instantly share code, notes, and snippets.

@nomadster
Last active January 3, 2016 05:39
Show Gist options
  • Save nomadster/8417453 to your computer and use it in GitHub Desktop.
Save nomadster/8417453 to your computer and use it in GitHub Desktop.
Nuovo formato YAML

Ieri sera si era deciso per questo nuovo formato di YAML:

---
 nomeparam: value
 nomeparam[]: arrayValue1
 importMe.yaml:

 groupName:
   subgroupName:
       nomeParam: true
       nomeParam2: 42
 ...

ma la cosa non risolve il fatto che non ci possono essere due param con lo stesso nome allo stesso livello. Me ne sono accorto facendo i test.

Ho fatto qualche altra ricerca ed ho trovato che YAML ha questa cosa che si chiama "pairs" (http://yaml.org/type/pairs.html) che ci vende come "Ordered sequence of key:value pairs allowing duplicates." Credo sia proprio quello che vogliamo noi. L'unica pecca è che, rispetto al codice sopra è un pelino più verboso, ma non molto:

---
# Explicitly typed pairs. http://yaml.org/type/pairs.html
!!pairs
 - array[]: with team.
 - unPrametro: true
 - import: filename.yml
 - gruppo:
   - param: 42
   - sottogruppo:
     - import: unfile.yml #Se vuoi possiamo fare "- unfile.yml:" invece che import
     - import: unaltrofile.yml
     - unParametroCheVuoi: ilSuoValore
   - parametroAlPariDelSottoGrouppo: valore
  - array[]: Ancora
...

Parsando con js-yaml si ottiene questo oggetto: http://bit.ly/1aBcapr

Che posso, a meno di cose strane che non sto notando ora, parsarmi facilmente fino ad ottenere l'oggetto che vogliamo noi, che dovrebbe essere fatto così (non ci considero gli import per semplicità):

{
 array: ['with team', 'Ancora' ],
 unPrametro: true,
 'gruppo/param': 42,
 'gruppo/sottogruppo/unParametroCheVuoi': 'ilSuoValore',
 'gruppo/parametroAlPariDelSottoGrouppo': valore
}

Ovviamente gli import rimangono "contestualizzati nel livello il cui si trovano", quindi un import in un sottogruppo cambia e/o aggiunge valori che avranno come prefisso quello che si ottiene attraversando la gerarchia dei gruppi in cui si trova.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment