Skip to content

Commit 8ffdb7c

Browse files
committed
Added line number in markdown file
1 parent 8ae308c commit 8ffdb7c

File tree

1 file changed

+46
-28
lines changed

1 file changed

+46
-28
lines changed

build/GenerateThemesWikiMarkdown.ps1

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

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

92109
Function 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-
103119
Function 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

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

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

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

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

Comments
 (0)