public static function encode($value, $toMap = true, $encodeEmptyStrings = false)
{
if (is_string($value)) {
return self::quoteString($value);
} else {
if (is_bool($value)) {
return $value ? 'true' : 'false';
} else {
if (is_array($value)) {
$results = '';
if (($n = count($value)) > 0 && array_keys($value) !== range(0, $n - 1)) {
foreach ($value as $k => $v) {
if ($v !== '' || $encodeEmptyStrings) {
if ($results !== '') {
$results .= ',';
}
$results .= "'{$k}':" . self::encode($v, $toMap, $encodeEmptyStrings);
}
}
return '{' . $results . '}';
} else {
foreach ($value as $v) {
if ($v !== '' || $encodeEmptyStrings) {
if ($results !== '') {
$results .= ',';
}
$results .= self::encode($v, $toMap, $encodeEmptyStrings);
}
}
return '[' . $results . ']';
}
} else {
if (is_integer($value)) {
return "{$value}";
} else {
if (is_float($value)) {
switch ($value) {
case -INF:
return 'Number.NEGATIVE_INFINITY';
break;
case INF:
return 'Number.POSITIVE_INFINITY';
break;
default:
$locale = localeConv();
if ($locale['decimal_point'] == '.') {
return "{$value}";
} else {
return str_replace($locale['decimal_point'], '.', "{$value}");
}
break;
}
} else {
if (is_object($value)) {
if ($value instanceof TJavaScriptLiteral) {
return $value->toJavaScriptLiteral();
} else {
return self::encode(get_object_vars($value), $toMap);
}
} else {
if ($value === null) {
return 'null';
} else {
return '';
}
}
}
}
}
}
}
}