diff --git a/src/Public/Pages.ps1 b/src/Public/Pages.ps1 index 797250b7..a9a1f108 100644 --- a/src/Public/Pages.ps1 +++ b/src/Public/Pages.ps1 @@ -682,7 +682,7 @@ function Add-PodeWebPageLink function ConvertTo-PodeWebPage { - [CmdletBinding()] + [CmdletBinding(DefaultParameterSetName = 'NoGrouping')] param( [Parameter(ValueFromPipeline=$true)] [string[]] @@ -692,9 +692,18 @@ function ConvertTo-PodeWebPage [string] $Module, + [Parameter(ParameterSetName = 'GroupByCustomKey')] + [string] + $Group, + + [Parameter(ParameterSetName = 'GroupByVerbs')] [switch] $GroupVerbs, + [Parameter(ParameterSetName = 'GroupByModuleName')] + [switch] + $GroupModule, + [Parameter()] [Alias('NoAuth')] [switch] @@ -854,11 +863,33 @@ function ConvertTo-PodeWebPage New-PodeWebTab -Name $name -Layouts $form }) - $group = [string]::Empty - if ($GroupVerbs) { - $group = $cmdInfo.Verb - if ([string]::IsNullOrWhiteSpace($group)) { - $group = '_' + switch ($PSCmdlet.ParameterSetName) { + 'NoGrouping' { + $group = [string]::Empty + break + } + + 'GroupByVerbs' { + $group = [string]::Empty + $group = $cmdInfo.Verb + if ([string]::IsNullOrWhiteSpace($group)) { + $group = '_' + } + break + } + + 'GroupByCustomKey' { + $group = $Group -replace "\.","" + break + } + + 'GroupByModuleName' { + $group = $cmdInfo.ModuleName -replace "\.","" + break + } + + default { + throw 'Unknown parameter set.' } } @@ -974,4 +1005,4 @@ function Test-PodeWebPage } return (@($pages) | Measure-Object).Count -gt 0 -} \ No newline at end of file +}