@@ -17,9 +17,10 @@ Function Main {
1717 # Get xaml files and loop through.
1818 Get-ChildItem $themesFullDir - Filter * .xaml |
1919 Foreach-Object {
20- $xamlString = Get-Content - Path $_.FullName
20+ $xamlPath = $_.FullName
21+ $xamlString = Get-Content - Path $xamlPath
2122 $file = Select-ControlNameFromFile ($_.Name )
22- Read-XamlStyles - xamlString $xamlString - file $file
23+ Read-XamlStyles - xamlString $xamlString - file $file - xamlPath $xamlPath
2324 }
2425 Set-Defaults
2526 Format-Output
@@ -33,8 +34,12 @@ Function Format-Output {
3334 }
3435 $previousFile = $style.File ;
3536
36- $linkAndStyleName = " [$ ( $style.Style ) ]($ ( $baseURL ) /$ ( $latestHash ) /" +
37- " $ ( $filePathURL ) /MaterialDesignTheme.$ ( $style.File ) .xaml)" ;
37+ $styleLink = " $ ( $baseURL ) /$ ( $latestHash ) /$ ( $filePathURL ) /MaterialDesignTheme.$ ( $style.File ) .xaml"
38+ if ($style.LineNumber ) {
39+ $styleLink += " #L$ ( $style.LineNumber ) "
40+ }
41+
42+ $linkAndStyleName = " [$ ( $style.Style ) ]($styleLink )" ;
3843 if ($style.IsDefault ) {
3944 Write-OutputFile (" $listMarkdown $ ( $linkAndStyleName ) $defaultStyleText " -replace ' \s+' , ' ' )
4045 }
@@ -70,83 +75,96 @@ Function Select-ControlNameFromFile {
7075}
7176
7277Function Read-XamlStyles {
73- Param ($xamlString , $file )
78+ Param ($xamlString , $file , $xamlPath )
7479 [xml ]$xaml = $xamlString
75- $xaml.ResourceDictionary.Style |
76- Foreach-Object {
80+ $xamlLines = Get-Content $xamlPath
81+ $lineNum = 1
82+ $xaml.ResourceDictionary.Style |
83+ Foreach-Object {
7784 Write-Output $_
85+ # Get line number by Key or TargetType
86+ $styleLineNumber = $null
87+ $searchKey = if ($_.Key ) { $_.Key } else { $_.TargetType }
88+
89+ for ($i = 0 ; $i -lt $xamlLines.Length ; $i ++ ) {
90+ if ($xamlLines [$i ] -match [regex ]::Escape($searchKey )) {
91+ $styleLineNumber = $i + 1
92+ break
93+ }
94+ }
95+
7896 if ($file -eq " Defaults" ) {
79- # Special handeling of Defaults
80- New-Default - style $_ - file $file
97+ New-Default - style $_ - file $file - lineNumber $styleLineNumber
8198 }
8299 elseif ($file -eq " Generic" ) {
83- # Special handeling of Generic
84- New-GenericDefault - style $_ - file $file
100+ New-GenericDefault - style $_ - file $file - lineNumber $styleLineNumber
85101 }
86- else {
87- New-Style - style $_ - file $file
102+ else {
103+ New-Style - style $_ - file $file - lineNumber $styleLineNumber
88104 }
105+ $lineNum ++
89106 }
90107}
91108
92109Function New-GenericDefault {
93- Param ($style , $file )
110+ Param ($style , $file , $lineNumber )
94111 $targetType = Read-TargetType ($style | Select-Object TargetType)
95112 $basedOn = Read-BasedOn ($style | Select-Object BasedOn)
96113 $styleNameValue = ($style | Select-Object Key).Key
97114 $defaultStyleName = if ($null -eq $styleNameValue ) { $basedOn } else { $styleNameValue }
98115 Write-Debug " [$file ] [Type: $targetType ] [StyleNameValue: $styleNameValue ] [BasedOn: $basedOn ] [DefaultStyleName: $defaultStyleName ]"
99- Add-DefaultStyle - file $file - targetType $targetType - styleName $defaultStyleName
116+ Add-DefaultStyle - file $file - targetType $targetType - styleName $defaultStyleName - lineNumber $lineNumber
100117}
101118
102-
103119Function New-Default {
104- Param ($style , $file )
120+ Param ($style , $file , $lineNumber )
105121 $targetType = Read-TargetType ($style | Select-Object TargetType)
106122 $basedOn = Read-BasedOn ($style | Select-Object BasedOn)
107123 $styleNameValue = ($style | Select-Object Key).Key
108124 $defaultStyleName = if ($null -eq $styleNameValue ) { $basedOn } else { $styleNameValue }
109125 Write-Debug " [$file ] [Type: $targetType ] [StyleNameValue: $styleNameValue ] [BasedOn: $basedOn ] [DefaultStyleName: $defaultStyleName ]"
110- Add-DefaultStyle - file $file - targetType $targetType - styleName $defaultStyleName
126+ Add-DefaultStyle - file $file - targetType $targetType - styleName $defaultStyleName - lineNumber $lineNumber
111127}
112128
113129Function New-Style {
114- Param ($style , $file )
130+ Param ($style , $file , $lineNumber )
115131 $targetType = Read-TargetType ($style | Select-Object TargetType)
116132 $styleName = ($style | Select-Object Key).Key
117- $splittedFile = $file.split (' .' ) # Suport for "nested" file names like DataGrid.ComboBox
133+ $splittedFile = $file.split (' .' ) # Support for "nested" file names like DataGrid.ComboBox
118134
119135 if ($targetType -eq $splittedFile [-1 ]) {
120136 Write-Debug " [Match ] [File: $file ] [Type: $targetType ] [Style: $styleName ]"
121- Add-Style - targetType $targetType - styleName $styleName - fileName $file
137+ Add-Style - targetType $targetType - styleName $styleName - fileName $file - lineNumber $lineNumber
122138 }
123139 else {
124- Write-Debug " [Skipped] [File: $file ] [Type: $targetType ] [Style: $styleName ] "
140+ Write-Debug " [Skipped] [File: $file ] [Type: $targetType ] [Style: $styleName ]"
125141 }
126142}
127143
128144Function Add-Style {
129- Param ($targetType , $styleName , $fileName )
130- $temp = Get-Style - targetType $targetType - styleName $styleName - fileName $file
145+ Param ($targetType , $styleName , $fileName , $lineNumber )
146+ $temp = Get-Style - targetType $targetType - styleName $styleName - fileName $file - lineNumber $lineNumber
131147 $discoverdStyles.Add ($temp ) | Out-Null
132148}
133149
134150Function Get-Style {
135- Param ($targetType , $styleName , $fileName )
136- $temp = " " | Select-Object " Control" , " Style" , " IsDefault" , " File"
151+ Param ($targetType , $styleName , $fileName , $lineNumber )
152+ $temp = " " | Select-Object " Control" , " Style" , " IsDefault" , " File" , " LineNumber "
137153 $temp.Control = $targetType
138154 $temp.Style = $styleName
139155 $temp.IsDefault = ! $styleName
140156 $temp.File = $fileName
157+ $temp.LineNumber = $lineNumber
141158 return $temp
142159}
143160
144161Function Add-DefaultStyle {
145- Param ($file , $targetType , $styleName )
146- $temp = " " | Select-Object " File" , " Type" , " Style"
162+ Param ($file , $targetType , $styleName , $lineNumber )
163+ $temp = " " | Select-Object " File" , " Type" , " Style" , " LineNumber "
147164 $temp.File = $file
148165 $temp.Type = $targetType
149166 $temp.Style = $styleName
167+ $temp.LineNumber = $lineNumber
150168 $defaults.Add ($temp ) | Out-Null
151169}
152170
0 commit comments