From 890cd6c58d3de7e91a95c4593243d30f1b6234af Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Wed, 15 Nov 2023 11:36:47 +0100 Subject: global-functions: introduce $HumanReadableNum --- global-functions.rsc | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'global-functions.rsc') diff --git a/global-functions.rsc b/global-functions.rsc index f0446bd..090269d 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -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={ -- cgit v1.2.3-54-g00ecf