psDoc/src/out-markdown-template.ps1
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)) "@ } } } |