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+="![$AltText]($Source"
        if($Title)
        {
            $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+="![$AltText]($Source"
        if($Title)
        {
            $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+="![$AltText]($Source"
        if($Title)
        {
            $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+="![$AltText]($Source"
        if($Title)
        {
            $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 = ''

}