O que esta ferramenta faz
Um arquivo .properties vira YAML, com os pontos virando estrutura.
# serviço
app.name=Demo
app.port=8080
app.debug=true
app:
name: Demo
port: 8080
debug: true
= e : separam igualmente uma chave do valor dela, as linhas de comentário começam com # ou !, e uma linha terminada em barra invertida continua na seguinte. Os escapes de um arquivo .properties — \:, \=, \n, \uXXXX — são decodificados, então caf\u00e9 chega como café.
As chaves indexadas viram listas
app.hosts[0]=alpha
app.hosts[1]=beta
app:
hosts:
- alpha
- beta
É assim que o Spring escreve uma lista num arquivo que não tem listas, e é o que o conversor de YAML para properties deste site produz. Na leitura, porém, você recebia duas chaves literais chamadas hosts[0] e hosts[1]: a ferramenta não reconhecia a própria saída, e a ida e volta perdia a sequência. Agora os índices formam uma sequência quando começam em 0 sem buraco. Um buraco, um repetido, ou um hosts simples ao lado deixam as chaves exatamente como estavam — mover um valor para tapar um buraco seria inventar uma ordem.
Uma chave repetida é recusada
app.port=8080
app.port=3000
Duplicate key "app.port": it already has a different value
O Properties.load fica com a última atribuição sem uma palavra, então o primeiro valor sumia. O sentido de YAML para properties já se recusava a escrever duas chaves que se achatam no mesmo nome; aceitá-las aqui em silêncio era o mesmo buraco visto do outro lado. Duas linhas idênticas continuam passando: repetir-se não confessa nada.
No que os valores se transformam
- Números e booleanos são tipados, como nas ferramentas de CSV:
8080é número,trueé booleano. 007continua string. O1e3também, e tudo o mais cujo texto carrega mais do que o valor.- Os escalares ambíguos ganham aspas.
y,oneNOsão strings para um leitor de YAML 1.2 e booleanos para o PyYAML, que lê YAML 1.1. Pôr aspas exatamente nesses deixa os dois leitores de acordo. - Um valor vazio é uma string vazia, não um nulo: o arquivo diz que a chave está lá sem nada dentro, e o YAML diz o mesmo.
Privado por padrão
Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.