public/Show-GlyThemePreview.ps1
|
function Show-GlyThemePreview { [CmdletBinding()] param( [string] $Theme = $script:GlyConfiguration.Theme, [string] $GlyphSet = $script:GlyConfiguration.GlyphSet ) $selectedTheme = Get-GlyTheme -Name $Theme $selectedGlyphSet = Get-GlyGlyphSet -Name $GlyphSet $matchers = [ordered]@{ Default = $null } $styles = @{ Default = $selectedTheme.Default } $glyphs = @{ Default = $selectedGlyphSet.Default } foreach ($rule in $selectedTheme.Rules) { $signature = ConvertTo-GlySelectorSignature -Selector $rule.Selector if (-not $matchers.Contains($signature)) { $matchers[$signature] = $rule.Selector } $styles[$signature] = $rule.Style } foreach ($rule in $selectedGlyphSet.Rules) { $signature = ConvertTo-GlySelectorSignature -Selector $rule.Selector if (-not $matchers.Contains($signature)) { $matchers[$signature] = $rule.Selector } $glyphs[$signature] = $rule.Glyph } foreach ($signature in $matchers.Keys) { $style = if ($styles.ContainsKey($signature)) { $styles[$signature] } else { $selectedTheme.Default } $glyph = if ($glyphs.ContainsKey($signature)) { [string] $glyphs[$signature] } else { $selectedGlyphSet.Default } $sample = if ([string]::IsNullOrEmpty($glyph)) { 'Sample' } else { "$glyph Sample" } [pscustomobject] [ordered]@{ PSTypeName = 'gly.ThemePreview' Matcher = ConvertTo-GlyMatcherLabel -Selector $matchers[$signature] Glyph = $glyph Color = ConvertTo-GlyStyleLabel -Style $style Preview = ConvertTo-GlyPreviewText -Text $sample -Style $style } } } |