Skip to content

Commit 159b4df

Browse files
committed
MdFormat-Link, abstracting render group logic etc
1 parent 21a5ae0 commit 159b4df

3 files changed

Lines changed: 436 additions & 33 deletions

File tree

source/readme.build.ps1

Lines changed: 96 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -79,65 +79,128 @@ $find_pq = fd -e pq --base-directory (gi $Config.AppRoot )
7979
filter MdFormat-EscapePath {
8080
$_ -replace ' ', '%20' -replace '\\', '/'
8181
}
82-
# drop files not commited
83-
$group_byParent = $find_pq | Group DirectoryBaseName
84-
$group_byRelPath = $find_pq | Group RelativePath
85-
$group_byDirectory = $find_pq | Group Directory
82+
function MdFormat-Link {
83+
param(
84+
[Parameter(Mandatory)]
85+
[string]$Name,
8686

87+
[Parameter(Mandatory)]
88+
[string]$Url,
8789

88-
function RenderByGroup {
89-
param(
90-
[Microsoft.PowerShell.Commands.GroupInfo] $GroupedBy,
91-
[string] $PathOutput
90+
[Alias('EscapePath')]
91+
[switch]$AlwaysEscapeUrlPath,
9292

93+
[Alias('EscapeName')]
94+
[switch]$AlwaysEscapeKey
9395
)
96+
$maybeEscapedPath =
97+
if( -not $AlwaysEscapeUrlPath ) {
98+
$url
99+
} else {
100+
$url | MdFormat-EscapePath
101+
}
102+
$maybeEscapedName =
103+
if( -not $AlwaysEscapeKey ) {
104+
$Name
105+
} else {
106+
$Name -replace '\(', '\(' -replace '\)', '\)' -replace '\[', '\[' -replace '\]', '\]'
107+
}
108+
[string] $rendMdLink = @(
109+
'[',
110+
$maybeEscapedName,
111+
']', '(',
112+
$maybeEscapedPath
113+
')'
114+
) -join ''
115+
$rendMdLink
116+
}
117+
function RenderReadmeForGroup {
118+
<#
119+
.SYNOPSIS
120+
Assumes you using grouped items that came from: FormatPQSourceItem
94121
95-
# if( $GroupedBy[0] -isnot [Microsoft.PowerShell.Commands.GroupInfo] ) {
96-
# throw "UnexpectedError, "
97-
# }
98-
99-
# }
122+
#>
123+
param(
124+
# [Microsoft.PowerShell.Commands.GroupInfo] $GroupedBy,
125+
$GroupedBy,
126+
[string] $PathOutput,
100127

128+
[hashtable]$Options = @{}
129+
)
101130
[string]$finalDocRender = ''
102131

103-
$GroupedBy | %{
104-
[string]$rendStr = ''
105-
$curGroup = $_
132+
# using this, because parameter binding likes to pass a pass a [Object[GroupInfo]]]
106133

107-
$groupName = $curGroup.Name
108-
$rendStr += @(
109-
"`n`n"
110-
"### ${GroupName}"
111-
"`n"
112-
) -join ''
134+
if( $GroupedBy[0] -isnot [Microsoft.PowerShell.Commands.GroupInfo] ) {
135+
throw "UnhandledInputTypeException: Requires object to be a [GroupInfo]"
136+
}
137+
138+
if($Options.TOC) {
139+
$GroupedBy.Name
140+
}
141+
142+
$GroupedBy | %{
143+
[string]$rendStr = ''
144+
$curGroup = $_
145+
146+
$groupName = $curGroup.Name
147+
$rendStr += @(
148+
"`n`n"
149+
"### ${GroupName}"
150+
"`n"
151+
) -join ''
152+
153+
$curGroup.Group | %{
154+
$curItem = $_
155+
$itemName = $CurItem.Name
156+
$itemRelPath = $CurItem.RelativePath
157+
$mdFormatLinkSplat = @{
158+
Name = $itemName
159+
Url = $itemRelPath
160+
AlwaysEscapeUrlPath = $true
161+
}
113162

114-
$curGroup.Group | %{
115-
$curItem = $_
163+
$rendMdLink = MdFormat-Link @mdFormatLinkSplat
164+
<# was
116165
$itemName = $CurItem.Name
117166
$itemRelPath = $CurItem.RelativePath | MdFormat-EscapePath
167+
118168
$rendMdLink = @(
119169
'[',
120170
$itemName,
121171
']', '(',
122172
$itemRelPath
123173
')'
124174
) -join ''
175+
#>
125176

126-
$rendStr += "`n${RendMdLink}"
127-
} # | Join-String -f "`n{0}`n"
128-
129-
$finalDocRender += $rendStr
130-
} | Join-String -f "`n{0}`n"
177+
$rendStr += @(
178+
"`n"
179+
$RendMdLink
180+
) -join ''
181+
} # | Join-String -f "`n{0}`n"
131182

132-
$FinalDocRender.length
183+
$finalDocRender += $rendStr
184+
} #| Join-String -f "`n{0}`n"
133185

134-
$FinalDocRender | Set-Content -Path $Config.ExportMd
135-
'wrote: {0}' -f $Config.ExportMd | write-host -fg 'orange'
186+
$FinalDocRender | Set-Content -Path $PathOutput
187+
'wrote: {0} of length {1}' -f @(
188+
$PathOutput
189+
$FinalDocRender.length
190+
)| write-host -fg 'orange'
136191
}
192+
# drop files not commited
193+
$group_byParent = $find_pq | Group DirectoryBaseName
194+
# $group_byRelPath = $find_pq | Group RelativePath
195+
$group_byDirectory = $find_pq | Group Directory
137196

197+
# RenderReadmeForGroup -GroupedBy $group_byRelpath -PathOutput 'readme.byRelpath.md'
198+
RenderReadmeForGroup -GroupedBy $group_byDirectory -PathOutput 'readme.byDirectory.md'
199+
RenderReadmeForGroup -GroupedBy $group_byParent -PathOutput 'readme.byParent.md'
138200

139201
$find_pq | Select -First 7 # | FormatPqSourceItem
140202
| ft -auto
141203
$find_pq | Select -First 2 # | FormatPqSourceItem
142204
| fl
143-
write-warning 'todo: make filter test if files are untracked or not'
205+
write-warning '[ ] todo: make filter test if files are untracked or not'
206+
write-warning '[ ] todo: make function run relative any directory'

source/readme.byDirectory.md

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
2+
3+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source
4+
5+
[Binary.ToBase64.pq](Binary.ToBase64.pq)
6+
[CoerceTo.Table.pq](CoerceTo.Table.pq)
7+
[CoerceTo.Table.succinct.pq](CoerceTo.Table.succinct.pq)
8+
[ConvertTo-Markdown.pq](ConvertTo-Markdown.pq)
9+
[DateTable_FromDates.backup.pq](DateTable_FromDates.backup.pq)
10+
[DateTable_FromDates.pq](DateTable_FromDates.pq)
11+
[DateTime.FromUnixTime.pq](DateTime.FromUnixTime.pq)
12+
[DateTime.ToOData.pq](DateTime.ToOData.pq)
13+
[Diagnostic.FormatDetailedLog.pq](Diagnostic.FormatDetailedLog.pq)
14+
[ErrorRecord.Format.pq](ErrorRecord.Format.pq)
15+
[Folder.FilesFormatted.pq](Folder.FilesFormatted.pq)
16+
[IP.DottedDecimalFromList.pq](IP.DottedDecimalFromList.pq)
17+
[Inspect.MetaOfType.pq](Inspect.MetaOfType.pq)
18+
[Inspect_TableColumn.pq](Inspect_TableColumn.pq)
19+
[List.AllDates.pq](List.AllDates.pq)
20+
[List.Combine_BitFlags.pq](List.Combine_BitFlags.pq)
21+
[List.ContinuousDates.pq](List.ContinuousDates.pq)
22+
[List.Schema.pq](List.Schema.pq)
23+
[List.Summarize.pq](List.Summarize.pq)
24+
[List.SummarizeListOfRecords.pq](List.SummarizeListOfRecords.pq)
25+
[Number.From_TextWithBase.pq](Number.From_TextWithBase.pq)
26+
[Number.ToHexString.pq](Number.ToHexString.pq)
27+
[ParameterQuery.Summary.pq](ParameterQuery.Summary.pq)
28+
[Query.Summarize.pq](Query.Summarize.pq)
29+
[Record.Summarize.pq](Record.Summarize.pq)
30+
[Serialize.ExtendedType.pq](Serialize.ExtendedType.pq)
31+
[Serialize.List.pq](Serialize.List.pq)
32+
[Serialize.Text.pq](Serialize.Text.pq)
33+
[Sketch-SummarizeError.pq](Sketch-SummarizeError.pq)
34+
[Splitter.SplitOnCaseChange.pq](Splitter.SplitOnCaseChange.pq)
35+
[SummarizeRec.pq](SummarizeRec.pq)
36+
[Table.ColumnContainsNonBlank.pq](Table.ColumnContainsNonBlank.pq)
37+
[Table.ContinuousDates.pq](Table.ContinuousDates.pq)
38+
[Table.FindBlankColumns.pq](Table.FindBlankColumns.pq)
39+
[Table.FindNotDistinctRows.pq](Table.FindNotDistinctRows.pq)
40+
[Table.FindSingleValueColumns.pq](Table.FindSingleValueColumns.pq)
41+
[Table.FromMashupLog.pq](Table.FromMashupLog.pq)
42+
[Table.RemoveBlankColumns.pq](Table.RemoveBlankColumns.pq)
43+
[Table.SelectRemovedColumns.pq](Table.SelectRemovedColumns.pq)
44+
[Table.ToJson.pq](Table.ToJson.pq)
45+
[Type.ToText.pq](Type.ToText.pq)
46+
[Type.ToText_simple.pq](Type.ToText_simple.pq)
47+
[Unicode.GenerateRange.pq](Unicode.GenerateRange.pq)
48+
[Validate_TableSchema.old.pq](Validate_TableSchema.old.pq)
49+
[Validate_TableSchema.pq](Validate_TableSchema.pq)
50+
[Value.ToPowerQuery.pq](Value.ToPowerQuery.pq)
51+
[old.Inspect.Metadata.pq](old.Inspect.Metadata.pq)
52+
53+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\alias
54+
55+
[Inspect.Metadata.pq](alias/Inspect.Metadata.pq)
56+
[Inspect.Type.pq](alias/Inspect.Type.pq)
57+
[alias_typeOf.pq](alias/alias_typeOf.pq)
58+
[default_alias_list.pq](alias/default_alias_list.pq)
59+
[mdt.pq](alias/mdt.pq)
60+
61+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\Assert
62+
63+
[Assert.ColumnsExist.pq](Assert/Assert.ColumnsExist.pq)
64+
[Assert.ColumnsHaveTypes.pq](Assert/Assert.ColumnsHaveTypes.pq)
65+
[Assert.ListLength.pq](Assert/Assert.ListLength.pq)
66+
[Columns.ThatExist.pq](Assert/Columns.ThatExist.pq)
67+
68+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\Color
69+
70+
[Rgb.FromHexString.pq](Color/Rgb.FromHexString.pq)
71+
72+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\docs
73+
74+
[Format.DocExpand.pq](docs/Format.DocExpand.pq)
75+
[Generate-Docs-JoinAlgorithm.pq](docs/Generate-Docs-JoinAlgorithm.pq)
76+
77+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\Errors
78+
79+
[Convert.ScriptExtent.FromError.pq](Errors/Convert.ScriptExtent.FromError.pq)
80+
[Err.InvalidColumnNames.pq](Errors/Err.InvalidColumnNames.pq)
81+
82+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\Evaluate
83+
84+
[EvalQuery.pq](Evaluate/EvalQuery.pq)
85+
86+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\Grouping
87+
88+
[GroupBy.ShowCounts.pq](Grouping/GroupBy.ShowCounts.pq)
89+
90+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\Html
91+
92+
[Write.Html.pq](Html/Write.Html.pq)
93+
94+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\inspect
95+
96+
[Inspect.Function.pq](inspect/Inspect.Function.pq)
97+
98+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\inspect\function
99+
100+
[inspect_func_enumFieldNames.pq](inspect/function/inspect_func_enumFieldNames.pq)
101+
102+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\List
103+
104+
[List.SelectBySuffix.pq](List/List.SelectBySuffix.pq)
105+
106+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\Number
107+
108+
[Duration.FromCustomText.pq](Number/Duration.FromCustomText.pq)
109+
[Number.FromHexString.pq](Number/Number.FromHexString.pq)
110+
[Number.ToHexString.pq](Number/Number.ToHexString.pq)
111+
112+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\prototype
113+
114+
[Error.Summarize.pq](prototype/Error.Summarize.pq)
115+
[Import_PowerQueryLib.pq](prototype/Import_PowerQueryLib.pq)
116+
117+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\random
118+
119+
[List.RandomIndex.pq](random/List.RandomIndex.pq)
120+
[List.RandomItem.pq](random/List.RandomItem.pq)
121+
[Random.Currency.pq](random/Random.Currency.pq)
122+
[Random.Int64.pq](random/Random.Int64.pq)
123+
124+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\Splitter
125+
126+
[Splitter.SplitByDigitWithSuffix.pq](Splitter/Splitter.SplitByDigitWithSuffix.pq)
127+
128+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\test
129+
130+
[summarize-schema.pq](test/summarize-schema.pq)
131+
[test_All.pbix-all.pq](test/test_All.pbix-all.pq)
132+
[test_DateTime_FromUnixTime.pq](test/test_DateTime_FromUnixTime.pq)
133+
[test_DateTime_ToOData.pq](test/test_DateTime_ToOData.pq)
134+
[test_ListAsText.old.pq](test/test_ListAsText.old.pq)
135+
136+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\Text
137+
138+
[Format.JoinBR.pq](Text/Format.JoinBR.pq)
139+
[Format.JoinNewLine.pq](Text/Format.JoinNewLine.pq)
140+
[Format.ShowBlank.pq](Text/Format.ShowBlank.pq)
141+
[Format.ToJsonText.pq](Text/Format.ToJsonText.pq)
142+
[Text.AnyMatches.pq](Text/Text.AnyMatches.pq)
143+
[Text.Contains.CI.pq](Text/Text.Contains.CI.pq)
144+
[Text.EndsWith.CI.pq](Text/Text.EndsWith.CI.pq)
145+
[Text.FormatCsv.pq](Text/Text.FormatCsv.pq)
146+
[Text.FormatList.pq](Text/Text.FormatList.pq)
147+
[Text.IsNullOrWhitespace.pq](Text/Text.IsNullOrWhitespace.pq)
148+
[Text.JsonToPowerQuery.pq](Text/Text.JsonToPowerQuery.pq)
149+
[Text.MatchesAny.pq](Text/Text.MatchesAny.pq)
150+
[Text.PositionOf.CI.pq](Text/Text.PositionOf.CI.pq)
151+
[Text.PositionOf.pq](Text/Text.PositionOf.pq)
152+
[Text.RemoveDiacritics.pq](Text/Text.RemoveDiacritics.pq)
153+
[Text.ReplaceFirstOnly.pq](Text/Text.ReplaceFirstOnly.pq)
154+
[Text.ReplaceMany.pq](Text/Text.ReplaceMany.pq)
155+
[Text.TransformRegexReplace.pq](Text/Text.TransformRegexReplace.pq)
156+
[Text.WordWrap.pq](Text/Text.WordWrap.pq)
157+
[TransformTo.TextList.pq](Text/TransformTo.TextList.pq)
158+
[XRay.pq](Text/XRay.pq)
159+
160+
### H:\data\2024\tabular\Ninmonkey.PowerQueryLib\source\web
161+
162+
[Html.GenerateSelectorList.pq](web/Html.GenerateSelectorList.pq)
163+
[Html.GetScalar.pq](web/Html.GetScalar.pq)
164+
[ImageUrl.ToBase64Text.pq](web/ImageUrl.ToBase64Text.pq)
165+
[Web.SimpleRequest.pq](web/Web.SimpleRequest.pq)
166+
[Web.SimpleRequest.tests.pq](web/Web.SimpleRequest.tests.pq)
167+
[WebRequest.pq](web/WebRequest.pq)
168+
[WebRequest_Simple.before_docs.pq](web/WebRequest_Simple.before_docs.pq)
169+
[WebRequest_Simple.pq](web/WebRequest_Simple.pq)
170+
[waitForResult.pq](web/waitForResult.pq)

0 commit comments

Comments
 (0)