Functions/Private/Get-RGB.ps1
function Get-RGB { Param( [Parameter(Mandatory)] [string] $Colour ) Write-Debug "Get-RGB: Parsing colour entry '$Colour'" $RGBMatch = '[0-9]{1,3},[0-9]{1,3},[0-9]{1,3}' $HexMatch = '#?[a-fA-F0-9]{6}' if ($Colour -Match $RGBMatch) { Write-Debug "Get-RGB: Colour '$Colour' is RGB" $RGB = $Colour.split(',') $Local:R = $RGB[0] $Local:G = $RGB[1] $Local:B = $RGB[2] } # Colour Colour is Hex elseif ($Colour -match $HexMatch) { Write-Debug "Get-RGB: Colour '$Colour' is hex" if ($Colour.StartsWith('#')) { $Colour = $Colour.Substring(1) } $RHex = $Colour.Substring(0, 2) $GHex = $Colour.Substring(2, 2) $BHex = $Colour.Substring(4, 2) $Local:R = [int] "0x$RHex" $Local:G = [int] "0x$GHex" $Local:B = [int] "0x$BHex" } # Colour - Check colours list else { if ($null -ne $Colours.$Colour) { Write-Debug "Get-RGB: Colour '$Colour' is in datastore" $Local:R = $Colours.$Colour.red $Local:G = $Colours.$Colour.green $Local:B = $Colours.$Colour.blue } } if ($null -ne $Local:R -and $null -ne $Local:G -and $null -ne $Local:B) { return [PSCustomObject] @{ red = $Local:R green = $Local:G blue = $Local:B } } else { Write-Debug "Get-RGB: Could not determine colour from '$Colour'" return $null } } |