functions/Close-SBStringBuilder.ps1

function Close-SBStringBuilder {
<#
    .SYNOPSIS
        Closes out an open stringbuilder, returning its string value content.
     
    .DESCRIPTION
        Closes out an open stringbuilder, returning its string value content.
     
    .PARAMETER Name
        Name of the string builder to work with.
        Defaults to the caller's module name (if present) or '<none>' (if not so)
     
    .EXAMPLE
        PS C:\> Close-SBStringBuilder
     
        Close out the current stringbuilder object.
#>

    [OutputType([string])]
    [CmdletBinding()]
    param (
        [PsfArgumentCompleter('StringBuilder.Name')]
        [string]
        $Name
    )
    
    begin {
        $sbName = [PSFramework.Utility.UtilityHost]::FriendlyCallstack.Entries[1].InvocationInfo.MyCommand.Module.Name
        if (-not $sbName) { $sbName = '<none>' }
        if ($Name) { $sbName = $Name }
        
        Assert-StringBuilder -Name $sbName -Cmdlet $PSCmdlet
    }
    process {
        $script:builders[$sbName].ToString()
        $script:builders.Remove($sbName)
    }
}