In 1.13, i file di lingua di Minecraft sono passati da un semplice formato multi-line key = value a JSON .
Sfida
Scrivi un programma che converte dal formato originale restituendo una stringa JSON. L'input può essere preso usando qualsiasi metodo di input standard, l'output deve essere json da qualsiasi metodo di output standard
Il formato originale contiene righe con coppie chiave = valore, ad esempio
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
Dovrebbe essere convertito in un oggetto JSON di grandi dimensioni con key = value
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
Alcuni dettagli
- È consentito qualsiasi JSON valido purché contenga solo le coppie chiave / valore corrette. Le virgole finali sono consentite perché Minecraft le consente.
- Le uniche cose che devono essere evitate sono le virgolette. (Nel file di lingua precedente alla 1.13 non esistevano newline, barre rovesciate o altre cose rompiscatole)
- Le righe vuote devono essere ignorate
- Le linee contengono esattamente uno uguale
Casi test
Ingresso:
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
Produzione:
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
Ingresso:
translation.test.none=Hello, world!
translation.test.complex=Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again!
translation.test.escape=%%s %%%s %%%%s %%%%%s
translation.test.invalid=hi %
translation.test.invalid2=hi % s
translation.test.args=%s %s
translation.test.world=world
Produzione:
{
"translation.test.none": "Hello, world!",
"translation.test.complex": "Prefix, %s%2$s again %s and %1$s lastly %s and also %1$s again!",
"translation.test.escape": "%%s %%%s %%%%s %%%%%s",
"translation.test.invalid": "hi %",
"translation.test.invalid2": "hi % s",
"translation.test.args": "%s %s",
"translation.test.world": "world",
}
Ingresso:
stat.mineBlock=%1$s Mined
stat.craftItem=%1$s Crafted
stat.useItem=%1$s Used
stat.breakItem=%1$s Depleted
Produzione:
{
"stat.mineBlock": "%1$s Mined",
"stat.craftItem": "%1$s Crafted",
"stat.useItem": "%1$s Used",
"stat.breakItem": "%1$s Depleted"
}
=
?
tile.dirt.name
diventa"block.minecraft.dirt"
?