@@ -12,41 +12,48 @@ $script:MOLE_BASE_LOADED = $true
1212# ============================================================================
1313# Color Definitions (ANSI escape codes for modern terminals)
1414# ============================================================================
15- $script :ESC = [char ]27
16- $script :DefaultColors = @ {
17- Green = " $ESC [0;32m"
18- Blue = " $ESC [0;34m"
19- Cyan = " $ESC [0;36m"
20- Yellow = " $ESC [0;33m"
21- Purple = " $ESC [0;35m"
22- PurpleBold = " $ESC [1;35m"
23- Red = " $ESC [0;31m"
24- Gray = " $ESC [0;90m"
25- White = " $ESC [0;37m"
26- NC = " $ESC [0m" # No Color / Reset
15+ function Get-MoleDefaultColors {
16+ $esc = [char ]27
17+ return @ {
18+ Green = " $esc [0;32m"
19+ Blue = " $esc [0;34m"
20+ Cyan = " $esc [0;36m"
21+ Yellow = " $esc [0;33m"
22+ Purple = " $esc [0;35m"
23+ PurpleBold = " $esc [1;35m"
24+ Red = " $esc [0;31m"
25+ Gray = " $esc [0;90m"
26+ White = " $esc [0;37m"
27+ NC = " $esc [0m" # No Color / Reset
28+ }
2729}
2830
2931# ============================================================================
3032# Icon Definitions
3133# ============================================================================
32- $script :DefaultIcons = @ {
33- Confirm = [char ]0x25CE # ◎
34- Admin = [char ]0x2699 # ⚙
35- Success = [char ]0x2713 # ✓
36- Error = [char ]0x263B # ☻
37- Warning = [char ]0x25CF # ●
38- Empty = [char ]0x25CB # ○
39- Solid = [char ]0x25CF # ●
40- List = [char ]0x2022 # •
41- Arrow = [char ]0x27A4 # ➤
42- DryRun = [char ]0x2192 # →
43- NavUp = [char ]0x2191 # ↑
44- NavDown = [char ]0x2193 # ↓
45- Folder = [char ]0x25A0 # ■ (folder substitute)
46- File = [char ]0x25A1 # □ (file substitute)
47- Trash = [char ]0x2718 # ✘ (trash substitute)
34+ function Get-MoleDefaultIcons {
35+ return @ {
36+ Confirm = [char ]0x25CE # ◎
37+ Admin = [char ]0x2699 # ⚙
38+ Success = [char ]0x2713 # ✓
39+ Error = [char ]0x263B # ☻
40+ Warning = [char ]0x25CF # ●
41+ Empty = [char ]0x25CB # ○
42+ Solid = [char ]0x25CF # ●
43+ List = [char ]0x2022 # •
44+ Arrow = [char ]0x27A4 # ➤
45+ DryRun = [char ]0x2192 # →
46+ NavUp = [char ]0x2191 # ↑
47+ NavDown = [char ]0x2193 # ↓
48+ Folder = [char ]0x25A0 # ■ (folder substitute)
49+ File = [char ]0x25A1 # □ (file substitute)
50+ Trash = [char ]0x2718 # ✘ (trash substitute)
51+ }
4852}
4953
54+ $script :DefaultColors = Get-MoleDefaultColors
55+ $script :DefaultIcons = Get-MoleDefaultIcons
56+
5057function Get-OrCreateScriptHashtable {
5158 param (
5259 [Parameter (Mandatory )]
@@ -63,24 +70,79 @@ function Get-OrCreateScriptHashtable {
6370 return $table
6471}
6572
73+ function Get-MoleDefaultHashtable {
74+ param (
75+ [Parameter (Mandatory )]
76+ [ValidateSet (' Colors' , ' Icons' )]
77+ [string ]$Name
78+ )
79+
80+ $defaultVariable = Get-Variable - Name " Default$Name " - Scope Script - ErrorAction SilentlyContinue
81+ if ($defaultVariable -and $defaultVariable.Value -is [hashtable ]) {
82+ return $defaultVariable.Value
83+ }
84+
85+ switch ($Name ) {
86+ ' Colors' { return Get-MoleDefaultColors }
87+ ' Icons' { return Get-MoleDefaultIcons }
88+ }
89+ }
90+
6691function Initialize-MoleVisualDefaults {
92+ $defaultColors = Get-MoleDefaultHashtable - Name " Colors"
6793 $colors = Get-OrCreateScriptHashtable - Name " Colors"
6894
69- foreach ($entry in $script :DefaultColors .GetEnumerator ()) {
95+ foreach ($entry in $defaultColors .GetEnumerator ()) {
7096 if (-not $colors.ContainsKey ($entry.Key )) {
7197 $colors [$entry.Key ] = $entry.Value
7298 }
7399 }
74100
101+ $defaultIcons = Get-MoleDefaultHashtable - Name " Icons"
75102 $icons = Get-OrCreateScriptHashtable - Name " Icons"
76103
77- foreach ($entry in $script :DefaultIcons .GetEnumerator ()) {
104+ foreach ($entry in $defaultIcons .GetEnumerator ()) {
78105 if (-not $icons.ContainsKey ($entry.Key )) {
79106 $icons [$entry.Key ] = $entry.Value
80107 }
81108 }
82109}
83110
111+ function Get-MoleVisualValue {
112+ param (
113+ [Parameter (Mandatory )]
114+ [ValidateSet (' Colors' , ' Icons' )]
115+ [string ]$TableName ,
116+
117+ [Parameter (Mandatory )]
118+ [string ]$Key
119+ )
120+
121+ $table = Get-OrCreateScriptHashtable - Name $TableName
122+ if (-not $table.ContainsKey ($Key )) {
123+ $defaults = Get-MoleDefaultHashtable - Name $TableName
124+ if ($defaults.ContainsKey ($Key )) {
125+ $table [$Key ] = $defaults [$Key ]
126+ }
127+ }
128+
129+ if ($table.ContainsKey ($Key )) {
130+ return $table [$Key ]
131+ }
132+
133+ return $null
134+ }
135+
136+ function Get-MoleColor {
137+ param ([Parameter (Mandatory )][string ]$Name )
138+ return Get-MoleVisualValue - TableName " Colors" - Key $Name
139+ }
140+
141+ function Get-MoleIcon {
142+ param ([Parameter (Mandatory )][string ]$Name )
143+ return Get-MoleVisualValue - TableName " Icons" - Key $Name
144+ }
145+
84146Initialize-MoleVisualDefaults
85147
86148# ============================================================================
0 commit comments