functions/New-RedGreenGradient.ps1
|
function New-RedGreenGradient { [cmdletbinding()] [OutputType([System.String])] param( [Parameter(Position = 0, HelpMessage = 'Specify a percentage as a decimal value like .35')] [ValidateScript( { $_ -le 1 })] [double]$Percent = 1, [Parameter(HelpMessage = 'Specify a relative bar length. The smaller the number the longer the bar.')] [ValidateRange(2, 10)] [int]$Step = 5, [Parameter(HelpMessage = 'Specify a character to use for the gradient bar')] [char]$Character = 0x2588 ) #tags are used for categorizing the command #cmdTags = console,graphical,ansi if ($Host.Name -eq 'Windows PowerShell ISE Host') { Write-Warning 'This command is not supported in the PowerShell ISE' return } Write-Verbose "Starting $($MyInvocation.MyCommand)" Write-Verbose "Running under PowerShell version $($PSVersionTable.PSVersion)" $r = 255 $g = 0 Write-Verbose "Using a percentage of $Percent" [int]$max = $r * $Percent Write-Verbose "Using a calculated max value of $max" [string[]]$out = @() Write-Verbose "Looping from through with a step value of $step" for ($i = 0; $i -le $max; $i += $Step) { $out += "$([char]0x1b)[38;2;$r;$g;0m$Character$([char]0x1b)[0m" $r -= $Step $g += $Step if ($g -ge 256) { Write-Verbose '100% green has been reached' break } } Write-Verbose 'Creating final ANSI gradient bar' $out -join '' Write-Verbose "Ending $($MyInvocation.MyCommand)" } #end function #EOF |