@@ -17,9 +17,9 @@ 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+ $xamlLines = Get-Content - Path $_.FullName
2121 $file = Select-ControlNameFromFile ($_.Name )
22- Read-XamlStyles - xamlString $xamlString - file $file
22+ Read-XamlStyles - xamlLines $xamlLines - file $file
2323 }
2424 Set-Defaults
2525 Format-Output
@@ -33,8 +33,12 @@ Function Format-Output {
3333 }
3434 $previousFile = $style.File ;
3535
36- $linkAndStyleName = " [$ ( $style.Style ) ]($ ( $baseURL ) /$ ( $latestHash ) /" +
37- " $ ( $filePathURL ) /MaterialDesignTheme.$ ( $style.File ) .xaml)" ;
36+ $styleLink = " $ ( $baseURL ) /$ ( $latestHash ) /$ ( $filePathURL ) /MaterialDesignTheme.$ ( $style.File ) .xaml"
37+ if ($style.LineNumber ) {
38+ $styleLink += " #L$ ( $style.LineNumber ) "
39+ }
40+
41+ $linkAndStyleName = " [$ ( $style.Style ) ]($styleLink )" ;
3842 if ($style.IsDefault ) {
3943 Write-OutputFile (" $listMarkdown $ ( $linkAndStyleName ) $defaultStyleText " -replace ' \s+' , ' ' )
4044 }
@@ -70,83 +74,95 @@ Function Select-ControlNameFromFile {
7074}
7175
7276Function Read-XamlStyles {
73- Param ($xamlString , $file )
74- [xml ]$xaml = $xamlString
75- $xaml.ResourceDictionary.Style |
76- Foreach-Object {
77+ Param ($xamlLines , $file )
78+ [xml ]$xaml = $xamlLines
79+ $lineNum = 1
80+ $xaml.ResourceDictionary.Style |
81+ Foreach-Object {
7782 Write-Output $_
83+ # Get line number by Key or TargetType
84+ $styleLineNumber = $null
85+ $searchKey = if ($_.Key ) { $_.Key } else { $_.TargetType }
86+
87+ for ($i = 0 ; $i -lt $xamlLines.Length ; $i ++ ) {
88+ if ($xamlLines [$i ] -match [regex ]::Escape($searchKey )) {
89+ $styleLineNumber = $i + 1
90+ break
91+ }
92+ }
93+
7894 if ($file -eq " Defaults" ) {
79- # Special handeling of Defaults
80- New-Default - style $_ - file $file
95+ New-Default - style $_ - file $file - lineNumber $styleLineNumber
8196 }
8297 elseif ($file -eq " Generic" ) {
83- # Special handeling of Generic
84- New-GenericDefault - style $_ - file $file
98+ New-GenericDefault - style $_ - file $file - lineNumber $styleLineNumber
8599 }
86- else {
87- New-Style - style $_ - file $file
100+ else {
101+ New-Style - style $_ - file $file - lineNumber $styleLineNumber
88102 }
103+ $lineNum ++
89104 }
90105}
91106
92107Function New-GenericDefault {
93- Param ($style , $file )
108+ Param ($style , $file , $lineNumber )
94109 $targetType = Read-TargetType ($style | Select-Object TargetType)
95110 $basedOn = Read-BasedOn ($style | Select-Object BasedOn)
96111 $styleNameValue = ($style | Select-Object Key).Key
97112 $defaultStyleName = if ($null -eq $styleNameValue ) { $basedOn } else { $styleNameValue }
98113 Write-Debug " [$file ] [Type: $targetType ] [StyleNameValue: $styleNameValue ] [BasedOn: $basedOn ] [DefaultStyleName: $defaultStyleName ]"
99- Add-DefaultStyle - file $file - targetType $targetType - styleName $defaultStyleName
114+ Add-DefaultStyle - file $file - targetType $targetType - styleName $defaultStyleName - lineNumber $lineNumber
100115}
101116
102-
103117Function New-Default {
104- Param ($style , $file )
118+ Param ($style , $file , $lineNumber )
105119 $targetType = Read-TargetType ($style | Select-Object TargetType)
106120 $basedOn = Read-BasedOn ($style | Select-Object BasedOn)
107121 $styleNameValue = ($style | Select-Object Key).Key
108122 $defaultStyleName = if ($null -eq $styleNameValue ) { $basedOn } else { $styleNameValue }
109123 Write-Debug " [$file ] [Type: $targetType ] [StyleNameValue: $styleNameValue ] [BasedOn: $basedOn ] [DefaultStyleName: $defaultStyleName ]"
110- Add-DefaultStyle - file $file - targetType $targetType - styleName $defaultStyleName
124+ Add-DefaultStyle - file $file - targetType $targetType - styleName $defaultStyleName - lineNumber $lineNumber
111125}
112126
113127Function New-Style {
114- Param ($style , $file )
128+ Param ($style , $file , $lineNumber )
115129 $targetType = Read-TargetType ($style | Select-Object TargetType)
116130 $styleName = ($style | Select-Object Key).Key
117- $splittedFile = $file.split (' .' ) # Suport for "nested" file names like DataGrid.ComboBox
131+ $splittedFile = $file.split (' .' ) # Support for "nested" file names like DataGrid.ComboBox
118132
119133 if ($targetType -eq $splittedFile [-1 ]) {
120134 Write-Debug " [Match ] [File: $file ] [Type: $targetType ] [Style: $styleName ]"
121- Add-Style - targetType $targetType - styleName $styleName - fileName $file
135+ Add-Style - targetType $targetType - styleName $styleName - fileName $file - lineNumber $lineNumber
122136 }
123137 else {
124- Write-Debug " [Skipped] [File: $file ] [Type: $targetType ] [Style: $styleName ] "
138+ Write-Debug " [Skipped] [File: $file ] [Type: $targetType ] [Style: $styleName ]"
125139 }
126140}
127141
128142Function Add-Style {
129- Param ($targetType , $styleName , $fileName )
130- $temp = Get-Style - targetType $targetType - styleName $styleName - fileName $file
143+ Param ($targetType , $styleName , $fileName , $lineNumber )
144+ $temp = Get-Style - targetType $targetType - styleName $styleName - fileName $file - lineNumber $lineNumber
131145 $discoverdStyles.Add ($temp ) | Out-Null
132146}
133147
134148Function Get-Style {
135- Param ($targetType , $styleName , $fileName )
136- $temp = " " | Select-Object " Control" , " Style" , " IsDefault" , " File"
149+ Param ($targetType , $styleName , $fileName , $lineNumber )
150+ $temp = " " | Select-Object " Control" , " Style" , " IsDefault" , " File" , " LineNumber "
137151 $temp.Control = $targetType
138152 $temp.Style = $styleName
139153 $temp.IsDefault = ! $styleName
140154 $temp.File = $fileName
155+ $temp.LineNumber = $lineNumber
141156 return $temp
142157}
143158
144159Function Add-DefaultStyle {
145- Param ($file , $targetType , $styleName )
146- $temp = " " | Select-Object " File" , " Type" , " Style"
160+ Param ($file , $targetType , $styleName , $lineNumber )
161+ $temp = " " | Select-Object " File" , " Type" , " Style" , " LineNumber "
147162 $temp.File = $file
148163 $temp.Type = $targetType
149164 $temp.Style = $styleName
165+ $temp.LineNumber = $lineNumber
150166 $defaults.Add ($temp ) | Out-Null
151167}
152168
0 commit comments