diff options
author | Christian Hesse <mail@eworm.de> | 2021-09-20 13:19:34 +0200 |
---|---|---|
committer | Christian Hesse <mail@eworm.de> | 2021-09-21 21:26:13 +0200 |
commit | 9295d06fe2fce058b6b21d69ea6eac8282d23337 (patch) | |
tree | 91d002607eb86341a7da6f8cd8021fd099c976fc /global-functions.d/inspectvar | |
parent | ce78d7d9e9ad1c2ab0e5ffab716b40975c6bd0eb (diff) |
global-functions.d/inspectvar: add $InspectVar...change-64
to inspect variables. This is useful for variables with (nested) arrays,
for example inspecting $NetwatchNotify (from netwatch-notify):
[admin@Mikrotik] > $InspectVar $NetwatchNotify
-type-> array
-key-> quad-one
-type-> array
-key-> count
-type-> num
-value-> 0
-key-> notified
-type-> bool
-value-> false
-key-> parent
-type-> nothing
-key-> resolve-failed
-type-> nothing
-key-> since
-type-> nothing
-key-> example.com
-type-> array
-key-> count
-type-> num
-value-> 0
-key-> notified
-type-> bool
-value-> false
-key-> parent
-type-> str
-value-> quad-one
-key-> resolve-failed
-type-> nothing
-key-> since
-type-> nothing
Diffstat (limited to 'global-functions.d/inspectvar')
-rw-r--r-- | global-functions.d/inspectvar | 40 |
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; + } + } +} |