Private/Format-ChainsawMessage.ps1



function Format-ChainsawMessage {
    [cmdletbinding()]
    param (
        [string] $Template,

        [string] $Message, 
        [string] $Level, 
        [string] $CallingFile, 
        [int] $LineNumber,
        [int] $ErrorCode,

        [switch] $Header
    )
    
    Process{

        $s = $Template
        
        if($Header){
            if( $s.Contains("#Level#") -eq $true ){
                $s = $s.Replace("#Level#", 'Level')
            }
    
            if( $s.Contains("#DateTime#") -eq $true ){
                $s = $s.Replace("#DateTime#", 'DateTime')
            }
    
            if( $s.Contains("#Message#") -eq $true ){
                $s = $s.Replace("#Message#", 'Message')
            }
    
            if( $s.Contains("#LineNumber#") -eq $true){
                $s = $s.Replace("#LineNumber#", 'LineNumber')
            }
    
            if( $s.Contains("#CallingFile#") -eq $true ){
                $s = $s.Replace("#CallingFile#", 'CallingFile')
            }

            if( $s.Contains("#ErrorCode#") -eq $true){
                $s = $s.Replace("#ErrorCode#", 'ErrorCode')
            }
    
            return $s
        }
        else {
            if( $s.Contains("#Level#") -eq $true ){
                $s = $s.Replace("#Level#", $Level)
            }
    
            if( $s.Contains("#DateTime#") -eq $true ){
                $dt = [datetime]::Now
                $s = $s.Replace("#DateTime#", $dt)
            }
    
            if( $s.Contains("#Message#") -eq $true ){
                $s = $s.Replace("#Message#", $Message)
            }
    
            if( $s.Contains("#LineNumber#") -eq $true -and 
                $LineNumber -ne 0){
                $s = $s.Replace("#LineNumber#", $LineNumber)
            }else{
                $s = $s.Replace("#LineNumber#", '')
            }
    
            if( $s.Contains("#CallingFile#") -eq $true){
                $s = $s.Replace("#CallingFile#", $CallingFile)
            } else {
                $s = $s.Replace("#CallingFile#", '')
            }

            if( $s.Contains("#ErrorCode#") -eq $true -and 
                $ErrorCode -ne 0){
                $s = $s.Replace("#ErrorCode#", $ErrorCode)
            }else{
                $s = $s.Replace("#ErrorCode#", '')
            }

            return $s
        }
    }
}