Private/Get-PSDependencyCanaryHashtableAst.ps1
|
<# .SYNOPSIS Parses a PowerShell data file and returns its root hashtable syntax tree. #> function Get-PSDependencyCanaryHashtableAst { [CmdletBinding()] param([Parameter(Mandatory)][string]$Content, [Parameter(Mandatory)][string]$Path) $tokens = $null $parseErrors = $null $ast = [System.Management.Automation.Language.Parser]::ParseInput( $Content, $Path, [ref]$tokens, [ref]$parseErrors ) if ($parseErrors.Count -gt 0) { throw "Unable to parse $Path`: $($parseErrors[0].Message)" } $hashtable = $ast.Find( { param($node) $node -is [System.Management.Automation.Language.HashtableAst] }, $false ) if (-not $hashtable) { throw "No root hashtable was found in $Path." } $hashtable } |