Вот, чего мне не хватало!
Сделал вывод похожим на php-шный. Конечно же, поддерживает вложенные структуры данных. Пока что не работает с объектами. Ну и вообще, нужно разнообразное тестирование. Для моих "повседневных" целей отлично подошел)
Импортируются алиасы:
var_dump : $var_dump(%var)
str_repeat : %line = $str_repeat("-", 7)
alias(str_repeat)
{
/*
Returns repeated streing
$0 - string to repeat
$1 - times to repeat
*/
%mult = $int($1);
for (%i=0; %i<%mult; %i++)
%res .= $0;
return %res;
}
alias(var_dump)
{
%type = $typeof($0)
%var = $0;
%indent = $int($1);
%indent_char = $string($2);
if ($str.len(%indent_char) == 0)
%indent_char = " "
switch(%type)
{
case(string)
{
echo $str_repeat(%indent_char, %indent)string($length($0)) \"$0\";
break;
}
case(integer)
{
echo $str_repeat(%indent_char, %indent)integer($0);
break
}
case(real)
{
echo $str_repeat(%indent_char, %indent)real($0);
break
}
case(boolean)
{
echo $str_repeat(%indent_char, %indent)boolean($0);
break
}
case(array)
{
echo $str_repeat(%indent_char, %indent)array($length($0)) \{;
for(%i=0;%i<$length($0);%i++)
{
echo $str_repeat(%indent_char, $(%indent+1))\[%i] =>
$var_dump($0[%i], $(%indent+1), %indent_char);
}
echo $str_repeat(%indent_char, %indent)\};
break;
}
case(hash)
{
echo $str_repeat(%indent_char, %indent)hash($length($0)) \{;
foreach(%i, $keys($0))
{
echo $str_repeat(%indent_char, $(%indent+1))\[%i] =>
$var_dump($0{%i}, $(%indent+1), %indent_char);
}
echo $str_repeat(%indent_char, %indent)\};
break;
}
case(hobject)
{
if ($isSet($0))
echo $str_repeat(%indent_char, %indent)hobject($0->$className()) $0->$name() \{
else
echo $str_repeat(%indent_char, %indent)hobject(null-object) \{
if ($objects.exists($0))
{
%vars_hash = $objects.variables($0);
//$var_dump(%vars_hash, $(%indent+1), %indent_char)
if ($isSet(%vars_hash))
{
foreach(%i, $keys(%vars_hash))
{
echo $str_repeat(%indent_char, $(%indent+1))\[%i] =>
$var_dump(%vars_hash{%i}, $(%indent+1), %indent_char);
}
}
}
else
{
$var_dump($nothing, $(%indent+1), %indent_char);
}
echo $str_repeat(%indent_char, %indent)\};
break;
}
case(nothing)
{
echo $str_repeat(%indent_char, %indent)nothing
break;
}
default
{
echo $str_repeat(%indent_char, %indent)%type(Not implemented) \{
echo $str_repeat(%indent_char, $(%indent+1))$0
echo $str_repeat(%indent_char, %indent)\};
break;
}
}
}
Например
/$var_dump($array(hello, $int(4), $hash(5, $real(6.4), hell, $false)))
[23:26:52] array(3) {
[23:26:52] [0] =>
[23:26:52] string(5) "hello"
[23:26:52] [1] =>
[23:26:52] integer(4)
[23:26:52] [2] =>
[23:26:52] hash(2) {
[23:26:52] [5] =>
[23:26:52] real(6.400000)
[23:26:52] [hell] =>
[23:26:52] boolean(0)
[23:26:52] }
[23:26:52] }