private/Convert-ToSpectreColor.ps1
using module ".\completions\Completers.psm1" <# .SYNOPSIS Converts a string representation of a color to a Spectre.Console.Color object. .DESCRIPTION This function takes a string representation of a color and converts it to a Spectre.Console.Color object. The input color can be in the form of a named color or a hexadecimal color code. .PARAMETER Color The color to convert. This parameter is mandatory and accepts input from the pipeline. .EXAMPLE # This example converts the string 'red' to a Spectre.Console.Color object. 'red' | Convert-ToSpectreColor .EXAMPLE # This example converts the hexadecimal color code '#FF0000' to a Spectre.Console.Color object. '#FF0000' | Convert-ToSpectreColor .EXAMPLE # This example passes through and returns the original color, it's needed for backwards compatibility with the older way of doing things in this library. [Spectre.Console.Color]::Salmon1 | Convert-ToSpectreColor #> function Convert-ToSpectreColor { param ( [Parameter(ValueFromPipeline, Mandatory)] [ValidateSpectreColor()] [object] $Color ) try { # Just return the console color object if($Color -is [Spectre.Console.Color]) { return $Color } # Already validated in validation attribute if($Color.StartsWith("#")) { $hexString = $Color -replace '^#', '' $hexBytes = [System.Convert]::FromHexString($hexString) return [Spectre.Console.Color]::new($hexBytes[0], $hexBytes[1], $hexBytes[2]) } # Validated in attribute as a real color already return [Spectre.Console.Color]::$Color } catch { return $script:AccentColor } } |