Files
M365FoundationsCISReport/helpers/psDoc-master/src/out-markdown-template.ps1
2024-03-25 08:34:43 -05:00

159 lines
2.9 KiB
PowerShell

function TrimAllLines([string] $str) {
$lines = $str -split "`n"
for ($i = 0; $i -lt $lines.Count; $i++) {
$lines[$i] = $lines[$i].Trim()
}
# Trim EOL.
($lines | Out-String).Trim()
}
function FixMarkdownString([string] $in = '', [bool] $includeBreaks = $false) {
if ($in -eq $null) { return }
$replacements = @{
'\' = '\\'
'`' = '\`'
'*' = '\*'
'_' = '\_'
'{' = '\{'
'}' = '\}'
'[' = '\['
']' = '\]'
'(' = '\('
')' = '\)'
'#' = '\#'
'+' = '\+'
'!' = '\!'
'<' = '\<'
'>' = '\>'
}
$rtn = $in.Trim()
foreach ($key in $replacements.Keys) {
$rtn = $rtn.Replace($key, $replacements[$key])
}
$rtn = TrimAllLines $rtn
$crlf = [Environment]::NewLine
if ($includeBreaks) {
$rtn = $rtn.Replace($crlf, " $crlf")
}
else {
$rtn = $rtn.Replace($crlf, " ").Trim()
}
$rtn
}
function FixMarkdownCodeString([string] $in) {
if ($in -eq $null) { return }
TrimAllLines $in
}
@"
# $moduleName Module
"@
$progress = 0
$commandsHelp | % {
Update-Progress $_.Name 'Documentation'
$progress++
@"
## $(FixMarkdownString($_.Name))
"@
$synopsis = $_.synopsis.Trim()
$syntax = $_.syntax | out-string
if (-not ($synopsis -ilike "$($_.Name.Trim())*")) {
$tmp = $synopsis
$synopsis = $syntax
$syntax = $tmp
@"
### Synopsis
$(FixMarkdownString($syntax))
"@
}
@"
### Syntax
``````powershell
$($synopsis)
``````
"@
if (!($_.alias.Length -eq 0)) {
@"
### $($_.Name) Aliases
"@
$_.alias | % {
@"
- $($_.Name)
"@
}
@"
"@
}
if ($_.parameters) {
@"
### Parameters
| Name | Alias | Description | Required? | Pipeline Input | Default Value |
| - | - | - | - | - | - |
"@
$_.parameters.parameter | % {
@"
| <nobr>$(FixMarkdownString($_.Name))</nobr> | $(FixMarkdownString($_.Aliases)) | $(FixMarkdownString(($_.Description | out-string).Trim())) | $(FixMarkdownString($_.Required)) | $(FixMarkdownString($_.PipelineInput)) | $(FixMarkdownString($_.DefaultValue)) |
"@
}
}
$inputTypes = $(FixMarkdownString($_.inputTypes | out-string))
if ($inputTypes.Length -gt 0 -and -not $inputTypes.Contains('inputType')) {
@"
### Inputs
- $inputTypes
"@
}
$returnValues = $(FixMarkdownString($_.returnValues | out-string))
if ($returnValues.Length -gt 0 -and -not $returnValues.StartsWith("returnValue")) {
@"
### Outputs
- $returnValues
"@
}
$notes = $(FixMarkdownString($_.alertSet | out-string))
if ($notes.Trim().Length -gt 0) {
@"
### Note
$notes
"@
}
if (($_.examples | Out-String).Trim().Length -gt 0) {
@"
### Examples
"@
$_.examples.example | % {
@"
**$(FixMarkdownString($_.title.Trim(('-',' '))))**
``````powershell
$(FixMarkdownCodeString($_.code | out-string ))
``````
$(FixMarkdownString($_.remarks | out-string ) $true)
"@
}
}
if (($_.relatedLinks | Out-String).Trim().Length -gt 0) {
@"
### Links
"@
$_.links | % {
@"
- [$($_.name)]($($_.link))
"@
}
}
}