aboutsummaryrefslogtreecommitdiffstats
path: root/global-functions.d/inspectvar
diff options
context:
space:
mode:
Diffstat (limited to 'global-functions.d/inspectvar')
-rw-r--r--global-functions.d/inspectvar40
1 files changed, 40 insertions, 0 deletions
diff --git a/global-functions.d/inspectvar b/global-functions.d/inspectvar
new file mode 100644
index 0000000..15da04a
--- /dev/null
+++ b/global-functions.d/inspectvar
@@ -0,0 +1,40 @@
+#!rsc by RouterOS
+# RouterOS script: global-functions.d/inspectvar
+# Copyright (c) 2020-2021 Christian Hesse <mail@eworm.de>
+# https://git.eworm.de/cgit/routeros-scripts/about/COPYING.md
+
+:global InspectVar;
+
+# inspect variable
+:set InspectVar do={
+ :local Input $1;
+ :local Level (0 + [ :tonum $2 ]);
+
+ :global InspectVar;
+
+ :local PutIndent do={
+ :local Prefix [ :tostr $1 ];
+ :local Value [ :tostr $2 ];
+ :local Level [ :tonum $3 ];
+
+ :local Indent "";
+ :for I from=1 to=$Level step=1 do={
+ :set Indent ($Indent . " ");
+ }
+ :put ($Indent . "-" . $Prefix . "-> " . $Value);
+ }
+
+ :local TypeOf [ :typeof $Input ];
+ $PutIndent "type" $TypeOf $Level;
+
+ :if ($TypeOf = "array") do={
+ :foreach Key,Value in=$Input do={
+ $PutIndent "key" $Key ($Level + 1);
+ $InspectVar $Value ($Level + 2);
+ }
+ } else={
+ :if ($TypeOf != "nothing") do={
+ $PutIndent "value" $Input $Level;
+ }
+ }
+}