global-functions: introduce $HumanReadableNum

This commit is contained in:
Christian Hesse 2023-11-15 11:36:47 +01:00
parent a4b2da8087
commit 890cd6c58d

View file

@ -38,6 +38,7 @@
:global GetRandomNumber;
:global Grep;
:global HexToNum;
:global HumanReadableNum;
:global IfThenElse;
:global IsDefaultRouteReachable;
:global IsDNSResolving;
@ -465,6 +466,36 @@
:return $Return;
}
# return human readable number
:global HumanReadableNum do={
:local Input [ :tonum $1 ];
:local Base [ :tonum $2 ];
:global EitherOr;
:local Prefix "kMGTPE";
:local Pow 1;
:set Base [ $EitherOr $Base 1024 ];
:if ($Input < $Base) do={
:return $Input;
}
:for I from=0 to=[ :len $Prefix ] do={
:set Pow ($Pow * $Base);
:if ($Input / $Base < $Pow) do={
:set Prefix [ :pick $Prefix $I ];
:local Tmp1 ($Input * 100 / $Pow);
:local Tmp2 ($Tmp1 / 100);
:if ($Tmp2 >= 100) do={
:return ($Tmp2 . $Prefix);
}
:return ($Tmp2 . "." . [ :pick $Tmp1 [ :len $Tmp2 ] ([ :len $Tmp1 ] - [ :len $Tmp2 ] + 1) ] . $Prefix);
}
}
}
# mimic conditional/ternary operator (condition ? consequent : alternative)
:set IfThenElse do={
:if ([ :tostr $1 ] = "true" || [ :tobool $1 ] = true) do={