Private/Get-AnsiSequence.ps1
|
function Convert-HexToRgb { [CmdletBinding()] param([Parameter(Mandatory)][string]$Hex) $clean = $Hex.Trim() if ($clean -notmatch '^#?[0-9A-Fa-f]{6}$') { throw "Invalid hex color '$Hex'. Expected #RRGGBB." } $clean = $clean.TrimStart('#') return @( [Convert]::ToInt32($clean.Substring(0,2), 16), [Convert]::ToInt32($clean.Substring(2,2), 16), [Convert]::ToInt32($clean.Substring(4,2), 16) ) } function Get-AnsiReset { "`e[0m" } function Get-AnsiBold { "`e[1m" } function Get-AnsiItalic { "`e[3m" } function Get-AnsiUnderline { "`e[4m" } function Get-AnsiFg { [CmdletBinding()] param([Parameter(Mandatory)][string]$Color) $rgb = Convert-HexToRgb -Hex $Color return "`e[38;2;$($rgb[0]);$($rgb[1]);$($rgb[2])m" } function Get-AnsiBg { [CmdletBinding()] param([Parameter(Mandatory)][string]$Color) $rgb = Convert-HexToRgb -Hex $Color return "`e[48;2;$($rgb[0]);$($rgb[1]);$($rgb[2])m" } function Strip-AnsiSequences { [CmdletBinding()] param([AllowNull()][string]$Text) return ([regex]::Replace(($Text ?? ''), "`e\[[0-9;?]*[ -/]*[@-~]", '')) } |