From 50f8153d7193804c0612bb63414d46e59dc0310e Mon Sep 17 00:00:00 2001 From: dfinke Date: Thu, 31 Mar 2016 16:16:11 -0400 Subject: [PATCH] Improve measure calculations --- Invoke-Sum.ps1 | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/Invoke-Sum.ps1 b/Invoke-Sum.ps1 index b2d6ecc..2b5bfa5 100644 --- a/Invoke-Sum.ps1 +++ b/Invoke-Sum.ps1 @@ -14,17 +14,28 @@ function Invoke-Sum { if(!$key) {$key="[missing]"} - $value = $item.$measure - if($value -is [string] -or $value -is [System.Enum]) { - $value = 1 + if(!$h.ContainsKey($key)) { + $h.$key=[ordered]@{} } - $h.$key+=$value - } - foreach ($entry in $h.GetEnumerator()){ - [PSCustomObject]@{ - Name=$entry.key - $measure=$entry.value + foreach($m in $measure) { + $value = $item.$m + if($value -is [string] -or $value -is [System.Enum]) { + $value = 1 + } + + $h.$key.$m+=$value } } + + foreach ($entry in $h.GetEnumerator()){ + + $nh=[ordered]@{Name=$entry.key} + + foreach ($item in $entry.value.getenumerator()) { + $nh.($item.key)=$item.value + } + + [pscustomobject]$nh + } } \ No newline at end of file