PocketMarkdown.ps1


filter Get-PocketMarkdown {
    <#
    .SYNOPSIS
        Gets Pocket Markdown
    .DESCRIPTION
        Gets [pckt.blog](https://pckt.blog) content as markdown.
    .LINK
        https://pckt.blog
    #>

    [Alias('PocketMarkdown')]
    param()
    $in = $_
    $mySelf = $MyInvocation.MyCommand.ScriptBlock
    @(switch ($in.'$type') {
        blog.pckt.content {
            $in.items | . $mySelf
        }
        blog.pckt.block.codeBlock {
            [Environment]::NewLine
            @(
            "~~~$($in.attrs.language)"
            $in.plainText
            "~~~"
            ) -join [Environment]::NewLine
            [Environment]::NewLine
        }
        blog.pckt.block.text {
            if ($in.plainText) {
                $in.plainText
                [Environment]::NewLine
            }            
            
            if ($in.content) {
                $in.content | . $myself
            }
            
        }
        blog.pckt.block.heading {
            if ($in.level -as [int]) {
                "#" * ($in.level -as [int])
            }
            if ($in.content) {
                $in.content | . $myself
            }
        }
        blog.pckt.block.hardBreak {
            [Environment]::NewLine
        }
        default {
            $in
        }   
    }) -join ''
}