Dans la version 1.13, les fichiers de langue Minecraft sont passés d'un simple format multi-lignes clé = valeur à JSON .
Défi
Écrivez un programme convertissant du format d'origine en renvoyant une chaîne JSON. L'entrée peut être prise en utilisant n'importe quelle méthode d'entrée standard, la sortie doit être json à partir de n'importe quelle méthode de sortie standard
Le format d'origine contient des lignes avec des paires clé = valeur, par exemple
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
Doit être converti en un grand objet JSON avec clé = valeur
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
Quelques détails
- Tout JSON valide est autorisé tant qu'il ne contient que les bonnes paires clé / valeur. Les virgules de fin sont autorisées car Minecraft les autorise.
- Les seules choses à échapper sont les guillemets. (Aucune nouvelle ligne, barre oblique inverse ou autre élément brisant json n'existait dans le fichier de langue avant la version 1.13)
- Les lignes vides doivent être ignorées
- Les lignes contiennent exactement un égal
Cas de test
Contribution:
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
Production:
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
Contribution:
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
Production:
{
"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",
}
Contribution:
stat.mineBlock=%1$s Mined
stat.craftItem=%1$s Crafted
stat.useItem=%1$s Used
stat.breakItem=%1$s Depleted
Production:
{
"stat.mineBlock": "%1$s Mined",
"stat.craftItem": "%1$s Crafted",
"stat.useItem": "%1$s Used",
"stat.breakItem": "%1$s Depleted"
}
=
?
tile.dirt.name
devient-il"block.minecraft.dirt"
?