aboutsummaryrefslogtreecommitdiffstats
path: root/mod/inspectvar.rsc
diff options
context:
space:
mode:
Diffstat (limited to 'mod/inspectvar.rsc')
-rw-r--r--mod/inspectvar.rsc37
1 files changed, 24 insertions, 13 deletions
diff --git a/mod/inspectvar.rsc b/mod/inspectvar.rsc
index 5adca0a..fc1b366 100644
--- a/mod/inspectvar.rsc
+++ b/mod/inspectvar.rsc
@@ -1,29 +1,31 @@
#!rsc by RouterOS
# RouterOS script: mod/inspectvar
-# Copyright (c) 2020-2024 Christian Hesse <mail@eworm.de>
-# https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md
+# Copyright (c) 2020-2025 Christian Hesse <mail@eworm.de>
+# https://rsc.eworm.de/COPYING.md
#
-# requires RouterOS, version=7.13
+# requires RouterOS, version=7.15
#
# inspect variables
-# https://git.eworm.de/cgit/routeros-scripts/about/doc/mod/inspectvar.md
+# https://rsc.eworm.de/doc/mod/inspectvar.md
:global InspectVar;
:global InspectVarReturn;
# inspect variable and print on terminal
-:set InspectVar do={
+:set InspectVar do={ :onerror Err {
:global InspectVarReturn;
- :global PrettyPrint;
- $PrettyPrint [ $InspectVarReturn $1 ];
-}
+ :put [ :tocrlf [ $InspectVarReturn $1 ] ];
+} do={
+ :global ExitError; $ExitError false $0 $Err;
+} }
# inspect variable and return formatted string
:set InspectVarReturn do={
:local Input $1;
:local Level (0 + [ :tonum $2 ]);
+ :global CharacterReplace;
:global IfThenElse;
:global InspectVarReturn;
@@ -32,14 +34,13 @@
:local Value [ :tostr $2 ];
:local Level [ :tonum $3 ];
- :local Indent "";
- :for I from=1 to=$Level step=1 do={
- :set Indent ($Indent . " ");
- }
- :return ($Indent . "-" . $Prefix . "-> " . $Value);
+ :global CharacterMultiply;
+
+ :return ([ $CharacterMultiply " " $Level ] . "-" . $Prefix . "-> " . $Value);
}
:local TypeOf [ :typeof $Input ];
+ :local Len [ :len $Input ];
:local Return [ $IndentReturn "type" $TypeOf $Level ];
:if ($TypeOf = "array") do={
@@ -49,6 +50,16 @@
[ $InspectVarReturn $Value ($Level + 2) ]);
}
} else={
+ :if ($TypeOf = "str") do={
+ :set $Return ($Return . "\n" . \
+ [ $IndentReturn "len" $Len $Level ]);
+ :if ([ :typeof [ :find $Input ("\r") ] ] = "num") do={
+ :set Input [ $CharacterReplace $Input ("\r") "" ];
+ }
+ :if ([ :typeof [ :find $Input ("\n") ] ] = "num") do={
+ :set Input [ $CharacterReplace $Input ("\n") " " ];
+ }
+ }
:if ($TypeOf != "nothing") do={
:set $Return ($Return . "\n" . \
[ $IndentReturn "value" [ $IfThenElse ([ :len $Input ] > 80) \