functions/private.ps1
#a private helper function to parse the key settings into more manageable objects #this is called in Get-WTKeyBinding Function parsesetting { [cmdletbinding()] param( [parameter(Mandatory, ValueFromPipeline)] [object]$Setting) Process { if ($setting.command -is [string]) { $cmd = $setting.command #assuming there is only a single key binding #it is also possible the json file may use array syntax #even though a single key combination is specified $keys = $setting.keys | Select-Object -first 1 $actionsettings = $null } else { $cmd = $setting.command.action $keys = $Setting.keys | Select-Object -first 1 #join other action settings into a string $other = $setting.command.psobject.properties.where( {$_.name -ne 'action'}) | ForEach-Object {"$($_.Name) = $($_.value)"} $actionsettings = $other -join ";" } [pscustomobject]@{ Action = $cmd ActionSettings = $actionsettings Keys = $keys } } } |