From 4ddc6be5859210e6a4c47699884f3fb67c3ed777 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Fri, 15 Sep 2023 22:50:32 +0200 Subject: global-functions: split off $FormatMultiLines ... ... to format multiple lines from an array. --- check-certificates.rsc | 3 ++- global-functions.rsc | 28 +++++++++++++++++++++------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/check-certificates.rsc b/check-certificates.rsc index 86e079a..3410d4d 100644 --- a/check-certificates.rsc +++ b/check-certificates.rsc @@ -78,6 +78,7 @@ :local CertVal $1; :global FormatLine; + :global FormatMultiLines; :global IfThenElse; :global ParseKeyValueStore; @@ -89,7 +90,7 @@ :return ( \ [ $FormatLine "Name" ($CertVal->"name") ] . "\n" . \ [ $IfThenElse ([ :len ($CertVal->"common-name") ] > 0) ([ $FormatLine "CommonName" ($CertVal->"common-name") ] . "\n") ] . \ - [ $IfThenElse ([ :len ($CertVal->"subject-alt-name") ] > 0) ([ $FormatLine "SubjectAltNames" ($CertVal->"subject-alt-name") ] . "\n") ] . \ + [ $IfThenElse ([ :len ($CertVal->"subject-alt-name") ] > 0) ([ $FormatMultiLines "SubjectAltNames" ($CertVal->"subject-alt-name") ] . "\n") ] . \ [ $FormatLine "Private key" [ $IfThenElse (($CertVal->"private-key") = true) "available" "missing" ] ] . "\n" . \ [ $FormatLine "Fingerprint" ($CertVal->"fingerprint") ] . "\n" . \ [ $FormatLine "Issuer" ($CertVal->"ca" . ([ $ParseKeyValueStore ($CertVal->"issuer") ]->"CN")) ] . "\n" . \ diff --git a/global-functions.rsc b/global-functions.rsc index 3d35a8d..8c96c72 100644 --- a/global-functions.rsc +++ b/global-functions.rsc @@ -31,6 +31,7 @@ :global EitherOr; :global EscapeForRegEx; :global FormatLine; +:global FormatMultiLines; :global GetMacVendor; :global GetRandom20CharAlNum; :global GetRandom20CharHex; @@ -339,25 +340,38 @@ # format a line for output :set FormatLine do={ - :local Key [ :tostr $1 ]; - :local Values [ :toarray $2 ]; - :local Indent [ :tonum $3 ]; + :local Key [ :tostr $1 ]; + :local Value [ :tostr $2 ]; + :local Indent [ :tonum $3 ]; :local Spaces " "; :local Return ""; :global EitherOr; - :global FormatLine; :set Indent [ $EitherOr $Indent 16 ]; :if ([ :len $Key ] > 0) do={ :set Return ($Key . ":"); } :if ([ :len $Key ] > ($Indent - 2)) do={ - :set Return ($Return . "\n" . [ :pick $Spaces 0 $Indent ] . ($Values->0)); + :set Return ($Return . "\n" . [ :pick $Spaces 0 $Indent ] . $Value); } else={ - :set Return ($Return . [ :pick $Spaces 0 ($Indent - [ :len $Return ]) ] . ($Values->0)); + :set Return ($Return . [ :pick $Spaces 0 ($Indent - [ :len $Return ]) ] . $Value); } + + :return $Return; +} + +# format multiple lines for output +:set FormatMultiLines do={ + :local Key [ :tostr $1 ]; + :local Values [ :toarray $2 ]; + :local Indent [ :tonum $3 ]; + :local Return; + + :global FormatLine; + + :set Return [ $FormatLine $Key ($Values->0) $Indent ]; :foreach Value in=[ :pick $Values 1 [ :len $Values ] ] do={ - :set Return ($Return . "\n" . [ $FormatLine "" ({$Value}) $Indent ]); + :set Return ($Return . "\n" . [ $FormatLine "" $Value $Indent ]); } :return $Return; -- cgit v1.2.3-70-g09d2