functions/New-ANSIBar.ps1
Function New-ANSIBar { [cmdletbinding(DefaultParameterSetName = "standard")] Param( [Parameter(Mandatory, HelpMessage = "Enter a range of 256 color values, e.g. (232..255)")] [ValidateNotNullOrEmpty()] [int[]]$Range, [Parameter(HelpMessage = "How many characters do you want in the bar of each value? This will increase the overall length of the bar.")] [int]$Spacing = 1, [Parameter(ParameterSetName = "standard", HelpMessage = "Specify a character to use for the bar.")] [ValidateSet("FullBlock", "LightShade", "MediumShade", "DarkShade", "BlackSquare", "WhiteSquare")] [string]$Character = "FullBlock", [Parameter(ParameterSetName = "custom", HelpMessage = "Specify a custom character.")] [char]$Custom, [Parameter(HelpMessage = "Display as a single gradient from the first value to the last.")] [switch]$Gradient ) Write-Verbose "Starting $($myinvocation.mycommand)" Write-Verbose "Using parameter set $($pscmdlet.ParameterSetName)" if ($pscmdlet.ParameterSetName -eq "Standard") { Write-Verbose "Using standard character $character" Switch ($Character) { "FullBlock" { $ch = $([char]0x2588) } "LightShade" { $ch = $([char]0x2591) } "MediumShade" { $ch = $([char]0x2592) } "DarkShade" { $ch = $([char]0x2593) } "BlackSquare" { $ch = $([char]0x25A0) } "WhiteSquare" { $ch = [char]0x25A1 } } } else { Write-Verbose "Using custom character $custom (which may not display here)" $ch = $Custom } $esc = "$([char]0x1b)" $out = @() $blank = "$($ch)"*$spacing if ($Gradient) { Write-Verbose "Creating gradient ANSI bar from $($range[0]) to $($range[-1])" $out += $range | ForEach-Object { "$esc[38;5;$($_)m$($blank)$esc[0m" } } else { Write-Verbose "Creating standard ANSI bar from $($range[0]) to $($range[-1])" $out += $range | ForEach-Object { "$esc[38;5;$($_)m$($blank)$esc[0m" } $out += $range | Sort-Object -Descending | ForEach-Object { "$esc[38;5;$($_)m$($blank)$esc[0m" } } $out -join "" Write-Verbose "Starting $($myinvocation.mycommand)" } #close function |