Formatting/PipeScript.Sentence.format.ps1

Write-FormatView -TypeName PipeScript.Sentence -Action {
    
    Write-FormatViewExpression -ForegroundColor Warning -Property Keyword -If { $_.Command }
    Write-FormatViewExpression -ForegroundColor green -ScriptBlock { " <# $($_.Command) #> " } -If { $_.Command }  
    
    Write-FormatViewExpression -ScriptBlock { ' ' }
    Write-FormatViewExpression -ScriptBlock {
        @(foreach ($clause in $_.Clauses) {
            $wordNumber = -1
            $wordSkipCount = 0
            if ($clause.Name) {
                $wordSkipCount = @($clause.Name -split '\s').Count
                Format-RichText -InputObject " $($clause.Name)" -ForegroundColor Cyan -Italic
            }

            if ($clause.ParameterName) {
                 Format-RichText -InputObject " <# -$($clause.ParameterName) #>" -ForegroundColor green
            }

            foreach ($word in $clause.Words | Select-Object -Skip $wordSkipCount) {
                $wordNumber++
                if ("$word" -match '^[\$\@]') {
                    Format-RichText -InputObject "$word" -ForegroundColor Success
                } elseif ($wordSkipCount) {
                    Format-RichText -InputObject "$word"                
                } else {                    
                    Format-RichText -InputObject "$word" -ForegroundColor Magenta
                }                
            }
        }) -join ' '
    }
        
    Write-FormatViewExpression -ForegroundColor Magenta -If { $_.Arguments -and -not $_.Clauses } -ScriptBlock {
        $_.Arguments -join ' '
    }    
}