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.