core/modules/psmarkdig/psmarkdig.psm1

Set-StrictMode -Version Latest

Function Import-MarkDigLibrary{
    [OutputType([System.Boolean])]
    [CmdletBinding()]
    param()
    $installed = $false
    $Assemblies = [System.Collections.Generic.List[string]]::new()
    $MarkDigPath = ("{0}/lib" -f $PSScriptRoot)
    ## Select the correct assemblies
    if ($PSEdition -eq 'Desktop'){
        $files = [System.IO.Directory]::EnumerateFiles(("{0}/net461" -f $MarkDigPath), "*.dll","AllDirectories")
        if($null -ne $files){
            foreach ($file in $files) {
                $Assemblies.Add($file)
            }
        }
    }
    elseif ($PSEdition -eq 'Core'){
        $files = [System.IO.Directory]::EnumerateFiles(("{0}/net8.0" -f $MarkDigPath),"*.dll","AllDirectories")
        if($null -ne $files){
            foreach ($file in $files) {
                $Assemblies.Add($file)
            }
        }
    }
    else{
        Write-Warning "Unknown PowerShell version"
    }
    #Load markdig lib
    try {
        Add-Type -LiteralPath $Assemblies | Out-Null
        Write-Verbose -Message "Markdig library installed successfully"
        $installed = $true
        return $installed
    }
    catch { throw }
}


$isInstalled = Import-MarkDigLibrary

if($isInstalled){
    $listofFiles = [System.IO.Directory]::EnumerateFiles(("{0}" -f $PSScriptRoot),"*.ps1","AllDirectories")
    $all_files = $listofFiles.Where({($_ -like "*public*") -or ($_ -like "*private*")})
    $content = $all_files.ForEach({
        [System.IO.File]::ReadAllText($_, [Text.Encoding]::UTF8) + [Environment]::NewLine
    })

    #Set-Content -Path $tmpFile -Value $content
    . ([scriptblock]::Create($content))

    $LocalizedDataParams = @{
        BindingVariable = 'messages';
        BaseDirectory = "{0}/{1}" -f $PSScriptRoot, "Localized";
    }
    #Import localized data
    Import-LocalizedData @LocalizedDataParams;
}
else{
    Write-Warning "Unable to load psmarkdig module"
}