Fixed TextFormat::toJSON() on nested formatting

This commit is contained in:
Shoghi Cervantes 2014-06-25 22:20:50 +02:00
parent e2f7cf61e3
commit b506ab349f

View File

@ -91,8 +91,17 @@ class TextFormat{
$underlined = false; $underlined = false;
$strikethrough = false; $strikethrough = false;
$obfuscated = false; $obfuscated = false;
$index = 0;
foreach($string as $token){ foreach($string as $token){
if(isset($pointer["text"])){
if(!isset($newString["extra"])){
$newString["extra"] = [];
}
$newString["extra"][$index] = [];
$pointer =& $newString["extra"][$index];
++$index;
}
switch($token){ switch($token){
case TextFormat::BOLD: case TextFormat::BOLD:
if($bold === false){ if($bold === false){
@ -218,12 +227,18 @@ class TextFormat{
break; break;
default: default:
$pointer["text"] = $token; $pointer["text"] = $token;
$pointer["extra"] = [];
$pointer =& $pointer["extra"];
break; break;
} }
} }
if(isset($newString["extra"])){
foreach($newString["extra"] as $k => $d){
if(!isset($d["text"])){
unset($newString["extra"][$k]);
}
}
}
return json_encode($newString, JSON_UNESCAPED_SLASHES); return json_encode($newString, JSON_UNESCAPED_SLASHES);
} }