public/Invoke-WpcPreProcess.ps1
|
function Invoke-WpcPreProcess { param( $node, [System.Collections.IDictionary] $baseVars, [string] $repoRoot, [string] $sourceDir ) if ($node -is [System.Collections.IDictionary]) { $result = [ordered]@{} foreach ($key in $node.Keys) { $result[$key] = Invoke-WpcPreProcess -node $node[$key] -baseVars $baseVars -repoRoot $repoRoot -sourceDir $sourceDir } return $result } if ($node -is [System.Collections.IEnumerable] -and $node -isnot [string]) { $result = [System.Collections.Generic.List[object]]::new() foreach ($item in $node) { $processed = Invoke-WpcPreProcess -node $item -baseVars $baseVars -repoRoot $repoRoot -sourceDir $sourceDir $result.Add($processed) } # The leading comma stops PowerShell unrolling a one-item list into a scalar. return , $result.ToArray() } if ($node -is [string]) { return , (Invoke-WpcPreProcessString -str $node -baseVars $baseVars -repoRoot $repoRoot -sourceDir $sourceDir) } return $node } |