Examples/Index.PSSVG.ps1

#requires -Module PSSVG

$fileList      = @(Get-ChildItem -Path $PSScriptRoot)
$fileListText  = $fileList | Select-Object Name | Out-String -Width 1kb
$fileListLines = @($fileListText -split '(?>\r\n|\n)')

$fontSize = 14

$ln = 0
$maxLineLength =0 
$goldenRatio   = (1 + [Math]::Sqrt(5)) / 2

svg (
    svg.text -Fontsize $fontSize -FontFamily monospace -Fill '#4488ff' @(    
    foreach ($line in $fileListLines) {
        $ln++
        $href = 
            if ($ln -le 2) {
                "."
            } else {
                $file = $fileList[$ln - 3]
                $file.Name
            }
        if ($line.Length -gt $maxLineLength) {
            $maxLineLength = $line.Length
        }
        
        svg.a -href $href (
            svg.tspan -X 0 -DY 1.2em -Fontsize $fontSize $fileListLines[$ln] -Xmlspace preserve -Fontfamily monospace -Fill '#4488ff'
        )
    }
    )
) -OutputPath (Join-Path $PSScriptRoot Index.svg) -ViewBox "0 0 $(($maxLineLength * $fontSize)/$goldenRatio) $($ln * $fontSize * 1.2)"