Classes/Completers/HaloAuthScopesCompleter.psm1

using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.Management.Automation
using namespace System.Management.Automation.Language
using module ..\HaloAuth.psm1

class HaloAuthScopesCompleter : IArgumentCompleter {
    <#
        .SYNOPSIS
            Argument completer for Halo authentication scopes.
        .DESCRIPTION
            Provides argument completion for Halo authentication scopes.
    #>

    [IEnumerable[CompletionResult]] CompleteArgument(
        [string]$Command,
        [string]$Parameter,
        [string]$WordToComplete,
        [CommandAST]$CommandAST,
        [IDictionary]$FakeBoundParams
    ) {
        $Scopes = [HaloAuth]::GetScopes()
        $Wildcard = ("*$($WordToComplete)*")
        $CompletionResults = [List[CompletionResult]]::new()
        $Scopes -like $Wildcard | ForEach-Object {
            $CompletionResults.Add(
                [CompletionResult]::new(
                    $_,
                    $_,
                    'ParameterValue',
                    $_
                )
            )
        }
        return $CompletionResults
    }
}