Skip to content

Commit d065de9

Browse files
authored
Updated script to include file links (Issue#1380) (#3750)
* Added line number in markdown file * refactored xamlString to xamlLines refactored xamlString to xamlLines and removed xamlPath var
1 parent 8ae308c commit d065de9

File tree

1 file changed

+45
-29
lines changed

1 file changed

+45
-29
lines changed

build/GenerateThemesWikiMarkdown.ps1

Lines changed: 45 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

7276
Function 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

92107
Function 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-
103117
Function 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

113127
Function 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

128142
Function 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

134148
Function 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

144159
Function 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

Comments
 (0)