internal/functions/vrule2-smush.ps1
<# .SYNOPSIS Applies Rule 2: Underscore Smushing for vertical smushing. .DESCRIPTION This function smushes an underscore (`_`) with specific characters (`|`, `/`, `\`, `[`, `]`, `{`, `}`, `(`, `)`, `<`, `>`) according to Rule 2 of the FIGlet vertical smushing rules. If one of the characters is an underscore and the other is in the allowed set, the underscore is replaced by the other character. .PARAMETER ch1 The first character to evaluate for vertical smushing. .PARAMETER ch2 The second character to evaluate for vertical smushing. .EXAMPLE $ch1 = "_" $ch2 = "|" $result = vRule2-Smush -ch1 $ch1 -ch2 $ch2 This example smushes the underscore (`_`) with the pipe (`|`) and returns `|`. .EXAMPLE $ch1 = "/" $ch2 = "_" $result = vRule2-Smush -ch1 $ch1 -ch2 $ch2 This example smushes the underscore (`_`) with the forward slash (`/`) and returns `/`. .EXAMPLE $ch1 = "_" $ch2 = "A" $result = vRule2-Smush -ch1 $ch1 -ch2 $ch2 This example does not smush the underscore (`_`) with the character `A` and returns `$false`. .NOTES This function implements Rule 2 of the FIGlet vertical smushing rules: Underscore Smushing. Author: Oleksandr Nikolaiev (@onikolaiev) #> function vRule2-Smush { [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSUseApprovedVerbs", "")] param ( [string]$ch1, [string]$ch2 ) $rule2Str = "|/\[]{}()<>" if ($ch1 -eq "_") { if ($rule2Str.Contains($ch2)) { return $ch2 } } elseif ($ch2 -eq "_") { if ($rule2Str.Contains($ch1)) { return $ch1 } } return $false } |