En 1.13, los archivos de idioma de Minecraft se cambiaron de ser un formato simple de clave = valor de varias líneas a JSON .
Desafío
Escriba un programa que convierta del formato original y devuelva una cadena JSON. La entrada se puede tomar usando cualquier método de entrada estándar, la salida debe ser json de cualquier método de salida estándar
El formato original contiene líneas con pares clave = valor, por ejemplo
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
Debe convertirse en un objeto JSON grande con clave = valor
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
Algunos detalles
- Se permite cualquier JSON válido siempre que contenga solo los pares clave / valor correctos. Las comas finales están permitidas porque Minecraft las permite.
- Las únicas cosas que se deben escapar son las comillas. (No existían líneas nuevas, barras diagonales invertidas u otras cosas que rompieran los json en el archivo de idioma antes de 1.13)
- Las líneas vacías deben ignorarse.
- Las líneas contienen exactamente uno igual
Casos de prueba
Entrada:
tile.dirt.name=Dirt
advMode.nearestPlayer=Use "@p" to target nearest player
build.tooHigh=Height limit for building is %s blocks
Salida:
{
"tile.dirt.name": "Dirt",
"advMode.nearestPlayer": "Use \"@p\" to target nearest player",
"build.tooHigh": "Height limit for building is %s blocks"
}
Entrada:
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
Salida:
{
"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",
}
Entrada:
stat.mineBlock=%1$s Mined
stat.craftItem=%1$s Crafted
stat.useItem=%1$s Used
stat.breakItem=%1$s Depleted
Salida:
{
"stat.mineBlock": "%1$s Mined",
"stat.craftItem": "%1$s Crafted",
"stat.useItem": "%1$s Used",
"stat.breakItem": "%1$s Depleted"
}
=
?
tile.dirt.name
llegar a ser"block.minecraft.dirt"
?