$Script:colourNames = @{ 'Ansi 0 Color' = 'Black' 'Ansi 1 Color' = 'Red' 'Ansi 2 Color' = 'Green' 'Ansi 3 Color' = 'Yellow' 'Ansi 4 Color' = 'Blue' 'Ansi 5 Color' = 'Magenta' 'Ansi 6 Color' = 'Cyan' 'Ansi 7 Color' = 'White' 'Ansi 8 Color' = 'Bright Black' 'Ansi 9 Color' = 'Bright Red' 'Ansi 10 Color' = 'Bright Green' 'Ansi 11 Color' = 'Bright Yellow' 'Ansi 12 Color' = 'Bright Blue' 'Ansi 13 Color' = 'Bright Magenta' 'Ansi 14 Color' = 'Bright Cyan' 'Ansi 15 Color' = 'Bright White' 'Background Color' = 'Background' 'Foreground Color' = 'Text' 'Bold Color' = 'Bold Text' 'Selection Color' = 'Selection Background' 'Selected Text Color' = 'Selected Foregrond' 'Cursor Color' = 'Cursor Background' 'Cursor Text Color' = 'Cursor Foreground' } function ConvertFrom-ItermColoursToHex { <# .SYNOPSIS Converts an SRGB iTerm colour scheme to hex RGB values .DESCRIPTION Converts an SRGB iTerm colour scheme to hex RGB values .PARAMETER InputXml The content of the colour scheme as an XmlDocument .INPUTS XmlDocument .OUTPUTS PSCustomObject .EXAMPLE ConvertFrom-ItermColoursToHex -InputXml [xml](Get-Content '.\colourscheme.itermcolors) .EXAMPLE [xml](Get-Content '.\colourscheme.itermcolors) | ConvertFrom-ItermColoursToHex .LINK https://github.com/charliebillen/ConvertItermColoursToHex #> [CmdletBinding()] param ( [Parameter(Mandatory, ValueFromPipeline)] [xml] $InputXml ) process { foreach ($key in $InputXml.GetElementsByTagName('key')) { $mappedName = $Script:colourNames[$key.InnerText] if (-not $mappedName) { continue } [pscustomobject]@{ Name = $mappedName Colour = Get-HexFromNode $key.NextSibling } } } } function Get-HexFromNode($colourNode) { [int]$r = 0; [int]$g = 0; [int]$b = 0 $realToByteValue = { param($real) 255 * [double]$real } foreach ($node in $colourNode.ChildNodes) { if ($node.InnerText -match 'red') { $r = &$realToByteValue $node.NextSibling.InnerText } if ($node.InnerText -match 'green') { $g = &$realToByteValue $node.NextSibling.InnerText } if ($node.InnerText -match 'blue') { $b = &$realToByteValue $node.NextSibling.InnerText } } "#{0:X2}{1:X2}{2:X2}" -f $r, $g, $b } Export-ModuleMember -Function ConvertFrom-ItermColoursToHex