public/writing/Out-SpectreHost.ps1

using module "..\..\private\completions\Transformers.psm1"

function Out-SpectreHost {
    <#
    .SYNOPSIS
    Writes a spectre renderable to the console host.

    .DESCRIPTION
    Out-SpectreHost writes a spectre renderable object to the console host.
    This function is used to output spectre renderables to the console when you want to avoid the additional newlines that the PowerShell formatter adds.

    .PARAMETER Data
    The data to write to the console.

    .PARAMETER CustomItemFormatter
    The default host customitem formatter has some restrictions, it needs to be one char less wide than when outputting to the standard console or it will wrap.

    .EXAMPLE
    $table = Get-ChildItem | Select-Object Name, Length, LastWriteTime | Format-SpectreTable
    $table | Out-SpectreHost
    #>

    [Reflection.AssemblyMetadata("title", "Out-SpectreHost")]
    param (
        [Parameter(ValueFromPipeline, Mandatory)]
        [RenderableTransformationAttribute()]
        [object] $Data,
        [switch] $CustomItemFormatter
    )

    begin {}

    process {
        if ($Data -is [array]) {
            foreach ($dataItem in $Data) {
                Write-AnsiConsole -RenderableObject $dataItem -CustomItemFormatter:$CustomItemFormatter
            }
        } else {
            Write-AnsiConsole -RenderableObject $Data -CustomItemFormatter:$CustomItemFormatter
        }
    }

    end {}
}