Skip to content

Instantly share code, notes, and snippets.

@ninmonkey
Last active November 30, 2023 15:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ninmonkey/5efac2401b2e6741ea22e3f0694c0f78 to your computer and use it in GitHub Desktop.
Save ninmonkey/5efac2401b2e6741ea22e3f0694c0f78 to your computer and use it in GitHub Desktop.
Basic powershell completions
function New.CompletionResult {
[Alias('New.CR')]
param(
# original base text
[Alias('Item', 'Text')]
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[ValidateNotNullOrWhiteSpace()]
[string]$ListItemText,
# actual value used in replacement, if not the same as ListItem
[AllowEmptyString()]
[AllowNull()]
[Alias('Replacement', 'Replace')]
[Parameter()]
[string]$CompletionText,
# Is there a better default?
[Parameter()]
[CompletionResultType]
$ResultType = ([CompletionResultType]::ParameterValue),
# multi-line text displayed when using listcompletion
[Parameter()]
[Alias('Description', 'Help', 'RenderText')]
[string[]]$Tooltip
)
[System.ArgumentException]::ThrowIfNullOrWhiteSpace( $ListItemText , 'ListItemText' )
$Tooltip = $Tooltip -join "`n"
if( [string]::IsNullOrEmpty( $Tooltip )) {
$Tooltip = '[⋯]'
}
if( [string]::IsNullOrEmpty( $CompletionText )) {
$CompletionText = $ListItemText
}
[CompletionResult]::new(
<# completionText: #> $completionText,
<# listItemText : #> $listItemText,
<# resultType : #> $resultType,
<# toolTip : #> $toolTip)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment