MarkdownPS.psd1
# # Module manifest for module 'MarkdownPS' # # Generated by: Alex Sarafian # # Generated on: 20/11/2019 # @{ # Script module or binary module file associated with this manifest. RootModule = 'MarkdownPS.psm1' # Version number of this module. ModuleVersion = '1.5' # Supported PSEditions # CompatiblePSEditions = @() # ID used to uniquely identify this module GUID = 'c1e7cbac-9e47-4906-8281-5f16471d7ccd' # Author of this module Author = 'Alex Sarafian' # Company or vendor of this module CompanyName = 'Unknown' # Copyright statement for this module Copyright = '(c) Alex Sarafian. All rights reserved.' # Description of the functionality provided by this module Description = 'A module to help render Markdown from powershell' # Minimum version of the PowerShell engine required by this module # PowerShellVersion = '' # Name of the PowerShell host required by this module # PowerShellHostName = '' # Minimum version of the PowerShell host required by this module # PowerShellHostVersion = '' # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. # DotNetFrameworkVersion = '' # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. # CLRVersion = '' # Processor architecture (None, X86, Amd64) required by this module # ProcessorArchitecture = '' # Modules that must be imported into the global environment prior to importing this module # RequiredModules = @() # Assemblies that must be loaded prior to importing this module # RequiredAssemblies = @() # Script files (.ps1) that are run in the caller's environment prior to importing this module. # ScriptsToProcess = @() # Type files (.ps1xml) to be loaded when importing this module # TypesToProcess = @() # Format files (.ps1xml) to be loaded when importing this module # FormatsToProcess = @() # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess # NestedModules = @() # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. FunctionsToExport = '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $true )] [ValidateSet("Bold","Italic","StrikeThrough")] [string]$Style ) Begin { } Process { switch ($Style) { "Bold" {$surround="**"} "Italic" {$surround="*"} "StrikeThrough" {$surround="~~"} } } End { "$surround$Text$surround" } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $true )] [ValidateSet("Bold","Italic","StrikeThrough")] [string]$Style ) Begin { } Process { switch ($Style) { "Bold" {$surround="**"} "Italic" {$surround="*"} "StrikeThrough" {$surround="~~"} } } End { "$surround$Text$surround" } ; Options=None; Description=; Verb=New; Noun=MDCharacterStyle; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [string]$Style=$null ) Begin { $output="``````$Style"+[System.Environment]::NewLine $prefix=" " for($i=1; $i -le $Level; $i++) { $prefix+=">" } } Process { $Lines|ForEach-Object { $output+="$prefix"+$_+[System.Environment]::NewLine } } End { $output+"``````"+[System.Environment]::NewLine } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [string]$Style=$null ) Begin { $output="``````$Style"+[System.Environment]::NewLine $prefix=" " for($i=1; $i -le $Level; $i++) { $prefix+=">" } } Process { $Lines|ForEach-Object { $output+="$prefix"+$_+[System.Environment]::NewLine } } End { $output+"``````"+[System.Environment]::NewLine } ; Options=None; Description=; Verb=New; Noun=MDCode; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,6)] [int]$Level=1, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $prefix="" for($i=1; $i -le $Level; $i++) { $prefix+="#" } } Process { if($output -ne "") { $output+=[System.Environment]::NewLine } $output+="$prefix $Text" } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,6)] [int]$Level=1, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $prefix="" for($i=1; $i -le $Level; $i++) { $prefix+="#" } } Process { if($output -ne "") { $output+=[System.Environment]::NewLine } $output+="$prefix $Text" } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDHeader; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $false, Position = 0, ValueFromPipeline = $true, ParameterSetName="Source" )] [ValidateNotNullOrEmpty()] [string]$Source, [Parameter( Mandatory = $false )] [ValidateNotNullOrEmpty()] [string]$Title=$null, [Parameter( Mandatory = $false )] [string]$AltText=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [string]$Subject=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [string]$Status=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [ValidateSet("brightgreen","green","yellowgreen","yellow","orange","red","lightgrey","blue")] [string]$Color=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [ValidateSet("plastic","flat","flat-square","social")] [string]$Style=$null, [Parameter( Mandatory = $false )] [string]$Link=$null ) Begin { $output="" } Process { if(-not $Source -and $Color) { $Subject=$Subject.Replace("-","--").Replace("_","__") $Subject=[System.Uri]::EscapeDataString($Subject) $Status=$Status.Replace("-","--").Replace("_","__") $Status=[System.Uri]::EscapeDataString($Status) #When running from powershell [System.Uri]::EscapeDataString is not escaping () if(-not $ise) { $Subject=$Subject.Replace("(","%28").Replace(")","%29") $Status=$Status.Replace("(","%28").Replace(")","%29") } $shieldIo="$Subject-$Status-$Color" $Source="https://img.shields.io/badge/$shieldIo.svg" if($Style) { $Source+="?style=$Style" } } $output+=" { $output+=" ""$Title""" } $output+=")" if($Link) { $output=New-MDLink -Text $output -Link $Link } } End { $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $false, Position = 0, ValueFromPipeline = $true, ParameterSetName="Source" )] [ValidateNotNullOrEmpty()] [string]$Source, [Parameter( Mandatory = $false )] [ValidateNotNullOrEmpty()] [string]$Title=$null, [Parameter( Mandatory = $false )] [string]$AltText=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [string]$Subject=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [string]$Status=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [ValidateSet("brightgreen","green","yellowgreen","yellow","orange","red","lightgrey","blue")] [string]$Color=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [ValidateSet("plastic","flat","flat-square","social")] [string]$Style=$null, [Parameter( Mandatory = $false )] [string]$Link=$null ) Begin { $output="" } Process { if(-not $Source -and $Color) { $Subject=$Subject.Replace("-","--").Replace("_","__") $Subject=[System.Uri]::EscapeDataString($Subject) $Status=$Status.Replace("-","--").Replace("_","__") $Status=[System.Uri]::EscapeDataString($Status) #When running from powershell [System.Uri]::EscapeDataString is not escaping () if(-not $ise) { $Subject=$Subject.Replace("(","%28").Replace(")","%29") $Status=$Status.Replace("(","%28").Replace(")","%29") } $shieldIo="$Subject-$Status-$Color" $Source="https://img.shields.io/badge/$shieldIo.svg" if($Style) { $Source+="?style=$Style" } } $output+=" { $output+=" ""$Title""" } $output+=")" if($Link) { $output=New-MDLink -Text $output -Link $Link } } End { $output } ; Options=None; Description=; Verb=New; Noun=MDImage; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text ) Begin { $output=@() } Process { $output+="``$Text``" } End { $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text ) Begin { $output=@() } Process { $output+="``$Text``" } End { $output } ; Options=None; Description=; Verb=New; Noun=MDInlineCode; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $true )] [ValidateNotNullOrEmpty()] [string]$Link, [Parameter( Mandatory = $false )] [ValidateNotNullOrEmpty()] [string]$Title=$null ) Begin { $output="" } Process { $output+="[$Text]($Link" if($Title) { $output+=" ""$Title""" } $output+=")" } End { $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $true )] [ValidateNotNullOrEmpty()] [string]$Link, [Parameter( Mandatory = $false )] [ValidateNotNullOrEmpty()] [string]$Title=$null ) Begin { $output="" } Process { $output+="[$Text]($Link" if($Title) { $output+=" ""$Title""" } $output+=")" } End { $output } ; Options=None; Description=; Verb=New; Noun=MDLink; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,3)] [int]$Level=1, [Parameter( Mandatory = $true )] [ValidateSet("Unordered","Ordered")] [string]$Style, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $counter=1 $prefix="" for($i=2; $i -le $Level; $i++) { switch ($Style) { "Unordered" { $prefix+=" " } "Ordered" { $prefix+=" " } } } } Process { switch ($Style) { "Unordered" { $Lines|ForEach-Object {$output+="$prefix- "+$_+[System.Environment]::NewLine} } "Ordered" { $Lines|ForEach-Object { $output+="$prefix$counter. "+$_+[System.Environment]::NewLine $counter++ } } } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,3)] [int]$Level=1, [Parameter( Mandatory = $true )] [ValidateSet("Unordered","Ordered")] [string]$Style, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $counter=1 $prefix="" for($i=2; $i -le $Level; $i++) { switch ($Style) { "Unordered" { $prefix+=" " } "Ordered" { $prefix+=" " } } } } Process { switch ($Style) { "Unordered" { $Lines|ForEach-Object {$output+="$prefix- "+$_+[System.Environment]::NewLine} } "Ordered" { $Lines|ForEach-Object { $output+="$prefix$counter. "+$_+[System.Environment]::NewLine $counter++ } } } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDList; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $false, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines=$null, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" } Process { if($Lines) { $Lines|ForEach-Object {$output+=$_+[System.Environment]::NewLine} } else { $output+=[System.Environment]::NewLine } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $false, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines=$null, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" } Process { if($Lines) { $Lines|ForEach-Object {$output+=$_+[System.Environment]::NewLine} } else { $output+=[System.Environment]::NewLine } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDParagraph; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,3)] [int]$Level=1, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $prefix="" for($i=1; $i -le $Level; $i++) { $prefix+=">" } } Process { $Lines|ForEach-Object { if($output -ne "") { $output+="$prefix"+[System.Environment]::NewLine } $output+="$prefix "+$_+[System.Environment]::NewLine } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,3)] [int]$Level=1, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $prefix="" for($i=1; $i -le $Level; $i++) { $prefix+=">" } } Process { $Lines|ForEach-Object { if($output -ne "") { $output+="$prefix"+[System.Environment]::NewLine } $output+="$prefix "+$_+[System.Environment]::NewLine } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDQuote; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [PSObject[]]$Object, [Parameter( Mandatory = $false )] $Columns=$null, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $items = @() $maxColumnLength=0 $output="" } Process { ForEach($item in $Object) { $items += $item } if(-not $Columns) { $Columns=@{} ForEach($item in $Object) { $item.PSObject.Properties | %{ if(-not $Columns.Contains($_.Name)){ $Columns[$_.Name]=$null } } } } ForEach($item in $Object) { $item.PSObject.Properties | %{ if($Columns.Contains($_.Name) -and $_.Value -ne $null){ $maxColumnLength=[Math]::Max($maxColumnLength, $_.Value.Length) } } } } End { $lines=@() $header = @() ForEach($key in $Columns.Keys) { $header += (''{0,-'' + $maxColumnLength + ''}'') -f $key } $lines+=''| ''+($header -join '' | '')+'' |'' $separator = @() ForEach($key in $Columns.Keys) { switch($Columns[$key]) { "left" { $separator += '' ''+''-'' * $maxColumnLength+'' '' } "right" { $separator += '' ''+''-'' * $maxColumnLength+'':'' } "center" { $separator += '':''+''-'' * $maxColumnLength+'':'' } default { $separator += '' ''+''-'' * $maxColumnLength+'' '' } } } $lines+=''|''+($separator -join ''|'')+''|'' ForEach($item in $items) { $values = @() ForEach($key in $Columns.Keys) { $values += (''{0,-'' + $maxColumnLength + ''}'') -f $item.($key) } $lines+=''| ''+ ($values -join '' | '') + '' |'' } $output+=$lines -join [System.Environment]::NewLine if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [PSObject[]]$Object, [Parameter( Mandatory = $false )] $Columns=$null, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $items = @() $maxColumnLength=0 $output="" } Process { ForEach($item in $Object) { $items += $item } if(-not $Columns) { $Columns=@{} ForEach($item in $Object) { $item.PSObject.Properties | %{ if(-not $Columns.Contains($_.Name)){ $Columns[$_.Name]=$null } } } } ForEach($item in $Object) { $item.PSObject.Properties | %{ if($Columns.Contains($_.Name) -and $_.Value -ne $null){ $maxColumnLength=[Math]::Max($maxColumnLength, $_.Value.Length) } } } } End { $lines=@() $header = @() ForEach($key in $Columns.Keys) { $header += (''{0,-'' + $maxColumnLength + ''}'') -f $key } $lines+=''| ''+($header -join '' | '')+'' |'' $separator = @() ForEach($key in $Columns.Keys) { switch($Columns[$key]) { "left" { $separator += '' ''+''-'' * $maxColumnLength+'' '' } "right" { $separator += '' ''+''-'' * $maxColumnLength+'':'' } "center" { $separator += '':''+''-'' * $maxColumnLength+'':'' } default { $separator += '' ''+''-'' * $maxColumnLength+'' '' } } } $lines+=''|''+($separator -join ''|'')+''|'' ForEach($item in $items) { $values = @() ForEach($key in $Columns.Keys) { $values += (''{0,-'' + $maxColumnLength + ''}'') -f $item.($key) } $lines+=''| ''+ ($values -join '' | '') + '' |'' } $output+=$lines -join [System.Environment]::NewLine if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDTable; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}' # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. CmdletsToExport = '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $true )] [ValidateSet("Bold","Italic","StrikeThrough")] [string]$Style ) Begin { } Process { switch ($Style) { "Bold" {$surround="**"} "Italic" {$surround="*"} "StrikeThrough" {$surround="~~"} } } End { "$surround$Text$surround" } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $true )] [ValidateSet("Bold","Italic","StrikeThrough")] [string]$Style ) Begin { } Process { switch ($Style) { "Bold" {$surround="**"} "Italic" {$surround="*"} "StrikeThrough" {$surround="~~"} } } End { "$surround$Text$surround" } ; Options=None; Description=; Verb=New; Noun=MDCharacterStyle; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [string]$Style=$null ) Begin { $output="``````$Style"+[System.Environment]::NewLine $prefix=" " for($i=1; $i -le $Level; $i++) { $prefix+=">" } } Process { $Lines|ForEach-Object { $output+="$prefix"+$_+[System.Environment]::NewLine } } End { $output+"``````"+[System.Environment]::NewLine } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [string]$Style=$null ) Begin { $output="``````$Style"+[System.Environment]::NewLine $prefix=" " for($i=1; $i -le $Level; $i++) { $prefix+=">" } } Process { $Lines|ForEach-Object { $output+="$prefix"+$_+[System.Environment]::NewLine } } End { $output+"``````"+[System.Environment]::NewLine } ; Options=None; Description=; Verb=New; Noun=MDCode; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,6)] [int]$Level=1, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $prefix="" for($i=1; $i -le $Level; $i++) { $prefix+="#" } } Process { if($output -ne "") { $output+=[System.Environment]::NewLine } $output+="$prefix $Text" } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,6)] [int]$Level=1, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $prefix="" for($i=1; $i -le $Level; $i++) { $prefix+="#" } } Process { if($output -ne "") { $output+=[System.Environment]::NewLine } $output+="$prefix $Text" } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDHeader; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $false, Position = 0, ValueFromPipeline = $true, ParameterSetName="Source" )] [ValidateNotNullOrEmpty()] [string]$Source, [Parameter( Mandatory = $false )] [ValidateNotNullOrEmpty()] [string]$Title=$null, [Parameter( Mandatory = $false )] [string]$AltText=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [string]$Subject=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [string]$Status=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [ValidateSet("brightgreen","green","yellowgreen","yellow","orange","red","lightgrey","blue")] [string]$Color=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [ValidateSet("plastic","flat","flat-square","social")] [string]$Style=$null, [Parameter( Mandatory = $false )] [string]$Link=$null ) Begin { $output="" } Process { if(-not $Source -and $Color) { $Subject=$Subject.Replace("-","--").Replace("_","__") $Subject=[System.Uri]::EscapeDataString($Subject) $Status=$Status.Replace("-","--").Replace("_","__") $Status=[System.Uri]::EscapeDataString($Status) #When running from powershell [System.Uri]::EscapeDataString is not escaping () if(-not $ise) { $Subject=$Subject.Replace("(","%28").Replace(")","%29") $Status=$Status.Replace("(","%28").Replace(")","%29") } $shieldIo="$Subject-$Status-$Color" $Source="https://img.shields.io/badge/$shieldIo.svg" if($Style) { $Source+="?style=$Style" } } $output+=" { $output+=" ""$Title""" } $output+=")" if($Link) { $output=New-MDLink -Text $output -Link $Link } } End { $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $false, Position = 0, ValueFromPipeline = $true, ParameterSetName="Source" )] [ValidateNotNullOrEmpty()] [string]$Source, [Parameter( Mandatory = $false )] [ValidateNotNullOrEmpty()] [string]$Title=$null, [Parameter( Mandatory = $false )] [string]$AltText=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [string]$Subject=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [string]$Status=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [ValidateSet("brightgreen","green","yellowgreen","yellow","orange","red","lightgrey","blue")] [string]$Color=$null, [Parameter( Mandatory = $false, ParameterSetName="Shields.io" )] [ValidateSet("plastic","flat","flat-square","social")] [string]$Style=$null, [Parameter( Mandatory = $false )] [string]$Link=$null ) Begin { $output="" } Process { if(-not $Source -and $Color) { $Subject=$Subject.Replace("-","--").Replace("_","__") $Subject=[System.Uri]::EscapeDataString($Subject) $Status=$Status.Replace("-","--").Replace("_","__") $Status=[System.Uri]::EscapeDataString($Status) #When running from powershell [System.Uri]::EscapeDataString is not escaping () if(-not $ise) { $Subject=$Subject.Replace("(","%28").Replace(")","%29") $Status=$Status.Replace("(","%28").Replace(")","%29") } $shieldIo="$Subject-$Status-$Color" $Source="https://img.shields.io/badge/$shieldIo.svg" if($Style) { $Source+="?style=$Style" } } $output+=" { $output+=" ""$Title""" } $output+=")" if($Link) { $output=New-MDLink -Text $output -Link $Link } } End { $output } ; Options=None; Description=; Verb=New; Noun=MDImage; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text ) Begin { $output=@() } Process { $output+="``$Text``" } End { $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text ) Begin { $output=@() } Process { $output+="``$Text``" } End { $output } ; Options=None; Description=; Verb=New; Noun=MDInlineCode; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $true )] [ValidateNotNullOrEmpty()] [string]$Link, [Parameter( Mandatory = $false )] [ValidateNotNullOrEmpty()] [string]$Title=$null ) Begin { $output="" } Process { $output+="[$Text]($Link" if($Title) { $output+=" ""$Title""" } $output+=")" } End { $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [ValidateNotNullOrEmpty()] [string]$Text, [Parameter( Mandatory = $true )] [ValidateNotNullOrEmpty()] [string]$Link, [Parameter( Mandatory = $false )] [ValidateNotNullOrEmpty()] [string]$Title=$null ) Begin { $output="" } Process { $output+="[$Text]($Link" if($Title) { $output+=" ""$Title""" } $output+=")" } End { $output } ; Options=None; Description=; Verb=New; Noun=MDLink; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,3)] [int]$Level=1, [Parameter( Mandatory = $true )] [ValidateSet("Unordered","Ordered")] [string]$Style, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $counter=1 $prefix="" for($i=2; $i -le $Level; $i++) { switch ($Style) { "Unordered" { $prefix+=" " } "Ordered" { $prefix+=" " } } } } Process { switch ($Style) { "Unordered" { $Lines|ForEach-Object {$output+="$prefix- "+$_+[System.Environment]::NewLine} } "Ordered" { $Lines|ForEach-Object { $output+="$prefix$counter. "+$_+[System.Environment]::NewLine $counter++ } } } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,3)] [int]$Level=1, [Parameter( Mandatory = $true )] [ValidateSet("Unordered","Ordered")] [string]$Style, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $counter=1 $prefix="" for($i=2; $i -le $Level; $i++) { switch ($Style) { "Unordered" { $prefix+=" " } "Ordered" { $prefix+=" " } } } } Process { switch ($Style) { "Unordered" { $Lines|ForEach-Object {$output+="$prefix- "+$_+[System.Environment]::NewLine} } "Ordered" { $Lines|ForEach-Object { $output+="$prefix$counter. "+$_+[System.Environment]::NewLine $counter++ } } } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDList; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $false, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines=$null, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" } Process { if($Lines) { $Lines|ForEach-Object {$output+=$_+[System.Environment]::NewLine} } else { $output+=[System.Environment]::NewLine } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $false, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines=$null, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" } Process { if($Lines) { $Lines|ForEach-Object {$output+=$_+[System.Environment]::NewLine} } else { $output+=[System.Environment]::NewLine } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDParagraph; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,3)] [int]$Level=1, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $prefix="" for($i=1; $i -le $Level; $i++) { $prefix+=">" } } Process { $Lines|ForEach-Object { if($output -ne "") { $output+="$prefix"+[System.Environment]::NewLine } $output+="$prefix "+$_+[System.Environment]::NewLine } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [string[]]$Lines, [Parameter( Mandatory = $false )] [ValidateNotNull()] [ValidateRange(1,3)] [int]$Level=1, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $output="" $prefix="" for($i=1; $i -le $Level; $i++) { $prefix+=">" } } Process { $Lines|ForEach-Object { if($output -ne "") { $output+="$prefix"+[System.Environment]::NewLine } $output+="$prefix "+$_+[System.Environment]::NewLine } } End { if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDQuote; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}', '@{HelpUri=; ScriptBlock= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [PSObject[]]$Object, [Parameter( Mandatory = $false )] $Columns=$null, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $items = @() $maxColumnLength=0 $output="" } Process { ForEach($item in $Object) { $items += $item } if(-not $Columns) { $Columns=@{} ForEach($item in $Object) { $item.PSObject.Properties | %{ if(-not $Columns.Contains($_.Name)){ $Columns[$_.Name]=$null } } } } ForEach($item in $Object) { $item.PSObject.Properties | %{ if($Columns.Contains($_.Name) -and $_.Value -ne $null){ $maxColumnLength=[Math]::Max($maxColumnLength, $_.Value.Length) } } } } End { $lines=@() $header = @() ForEach($key in $Columns.Keys) { $header += (''{0,-'' + $maxColumnLength + ''}'') -f $key } $lines+=''| ''+($header -join '' | '')+'' |'' $separator = @() ForEach($key in $Columns.Keys) { switch($Columns[$key]) { "left" { $separator += '' ''+''-'' * $maxColumnLength+'' '' } "right" { $separator += '' ''+''-'' * $maxColumnLength+'':'' } "center" { $separator += '':''+''-'' * $maxColumnLength+'':'' } default { $separator += '' ''+''-'' * $maxColumnLength+'' '' } } } $lines+=''|''+($separator -join ''|'')+''|'' ForEach($item in $items) { $values = @() ForEach($key in $Columns.Keys) { $values += (''{0,-'' + $maxColumnLength + ''}'') -f $item.($key) } $lines+=''| ''+ ($values -join '' | '') + '' |'' } $output+=$lines -join [System.Environment]::NewLine if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; CmdletBinding=True; DefaultParameterSet=; Definition= [CmdletBinding()] [OutputType([string])] Param ( [Parameter( Mandatory = $true, Position = 0, ValueFromPipeline = $true )] [PSObject[]]$Object, [Parameter( Mandatory = $false )] $Columns=$null, [Parameter( ValueFromPipeline = $false )] [ValidateNotNullOrEmpty()] [switch]$NoNewLine=$false ) Begin { $items = @() $maxColumnLength=0 $output="" } Process { ForEach($item in $Object) { $items += $item } if(-not $Columns) { $Columns=@{} ForEach($item in $Object) { $item.PSObject.Properties | %{ if(-not $Columns.Contains($_.Name)){ $Columns[$_.Name]=$null } } } } ForEach($item in $Object) { $item.PSObject.Properties | %{ if($Columns.Contains($_.Name) -and $_.Value -ne $null){ $maxColumnLength=[Math]::Max($maxColumnLength, $_.Value.Length) } } } } End { $lines=@() $header = @() ForEach($key in $Columns.Keys) { $header += (''{0,-'' + $maxColumnLength + ''}'') -f $key } $lines+=''| ''+($header -join '' | '')+'' |'' $separator = @() ForEach($key in $Columns.Keys) { switch($Columns[$key]) { "left" { $separator += '' ''+''-'' * $maxColumnLength+'' '' } "right" { $separator += '' ''+''-'' * $maxColumnLength+'':'' } "center" { $separator += '':''+''-'' * $maxColumnLength+'':'' } default { $separator += '' ''+''-'' * $maxColumnLength+'' '' } } } $lines+=''|''+($separator -join ''|'')+''|'' ForEach($item in $items) { $values = @() ForEach($key in $Columns.Keys) { $values += (''{0,-'' + $maxColumnLength + ''}'') -f $item.($key) } $lines+=''| ''+ ($values -join '' | '') + '' |'' } $output+=$lines -join [System.Environment]::NewLine if(-not $NoNewLine) { $output+=[System.Environment]::NewLine } $output } ; Options=None; Description=; Verb=New; Noun=MDTable; HelpFile=; OutputType=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.PSTypeName]; CommandType=Function; Source=MarkDownPS; Version=1.4; Visibility=Public; ModuleName=MarkDownPS; Module=MarkDownPS; RemotingCapability=PowerShell; Parameters=System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterMetadata]; ParameterSets=System.Collections.ObjectModel.ReadOnlyCollection`1[System.Management.Automation.CommandParameterSetInfo]}' # Variables to export from this module VariablesToExport = '*' # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. AliasesToExport = '*' # DSC resources to export from this module # DscResourcesToExport = @() # List of all modules packaged with this module # ModuleList = @() # List of all files packaged with this module # FileList = @() # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. PrivateData = @{ PSData = @{ # Tags applied to this module. These help with module discovery in online galleries. Tags = 'Markdown', 'Tools' # A URL to the license for this module. LicenseUri = 'https://github.com/Sarafian/MarkdownPS/blob/master/LICENSE' # A URL to the main website for this project. ProjectUri = 'https://github.com/Sarafian/MarkdownPS/' # A URL to an icon representing this module. IconUri = 'https://github.com/dcurtis/markdown-mark/blob/master/png/66x40-solid.png' # ReleaseNotes of this module ReleaseNotes = 'https://github.com/Sarafian/MarkdownPS/blob/master/CHANGELOG.md' } # End of PSData hashtable } # End of PrivateData hashtable # HelpInfo URI of this module # HelpInfoURI = '' # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. # DefaultCommandPrefix = '' } |