src/SyntaxErrorDataBuilder.ps1

param ($SyntaxErrors, $CodeContent)
$CodeLines = if ($CodeContent) { $CodeContent -split "\r?\n" }
$SyntaxErrors | ForEach-Object {
    $Extent = $_.Extent
    # 只显示出错的那一行;没有代码内容或行号越界时退回完整脚本
    $ScriptLine = if ($CodeLines -and $Extent.StartLineNumber -ge 1 -and $Extent.StartLineNumber -le $CodeLines.Count) {
        $CodeLines[$Extent.StartLineNumber - 1]
    }
    elseif ($Extent.StartScriptPosition) {
        $Extent.StartScriptPosition.GetFullScript()
    }
    @{
        Text      = $ScriptLine
        Message   = $_.Message
        Spoce     = @{
            Line      = $Extent.StartLineNumber
            Column    = $Extent.StartColumnNumber
            LineEnd   = $Extent.EndLineNumber
            ColumnEnd = $Extent.EndColumnNumber
        }
        SpoceText = $Extent.StartLineNumber, $Extent.StartColumnNumber
        ErrorId   = $_.ErrorId
    }
}