public/Resolve-GzTemplate.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
function Resolve-GzTemplate() { Param( [Parameter(Position = 0)] [String] $Template, [Parameter(Position = 1, ValueFromPipeline = $True)] [PsCustomObject] $Model ) $eval = { param($m) $var = $m.Value.TrimStart('{').TrimEnd('}').Trim() if($var -match "env:") { $parts = $var.Split(':') $name = $parts[1]; return (Get-Item "Env:/$Name").Value } if($var.Contains(".")) { $parts = $var.Split(".") $m = $Model; for($i = 0; $i -lt $parts.Length; $i++) { $next = $parts[$i] $m = $m.$next if($null -eq $m) { return $null; } } return $m; } $m = $Model.$var return $m } $pattern = [Regex]"{{\s*[\w\.:]+\s*}}" $result = $pattern.Replace($Template, $eval) return $result } |