LinkKindTransformAttribute
The LinkKindTransformAttribute converts a string with wildcard characters into one or more LinkKind enum values.
2 minute read
Definition
Source Code
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
using namespace System.Management.Automation
using module ../Enums/LinkKind.psm1
class LinkKindTransformAttribute : ArgumentTransformationAttribute {
[object] Transform([EngineIntrinsics]$engineIntrinsics, [System.Object]$inputData) {
$ValidEnums = [LinkKind].GetEnumNames()
$outputData = switch ($inputData) {
{ $_ -is [LinkKind] } { $_ }
{ $_ -is [string] } {
if ($_ -in $ValidEnums) {
$_
} elseif ($Matching = $ValidEnums -like $_) {
$Matching
} else {
$Message = @(
"Specified kind '$_' couldn't resolve to any LinkKind enums;"
'values must be a specific LinkKind or a wildcard expression'
"(containing '*', '?', or '[]') matching one or more LinkKind."
"Valid LinkKind enums are: $ValidEnums"
) -join ' '
throw [ArgumentTransformationMetadataException]::New(
$Message
)
}
}
default {
$Message = @(
"Could not convert input ($_) of type '$($_.GetType().FullName)' to a LinkKind."
"Specify a valid LinkKind or a wildcard expression (containing '*', '?', or '[]')"
"matching one or more LinkKind enums. Valid LinkKind enums are: $ValidEnums"
) -join ' '
throw [ArgumentTransformationMetadataException]::New(
$Message
)
}
}
return $outputData
}
}
The LinkKindTransformAttribute class is an argument transformation attribute that converts a string with wildcard characters into one or more LinkKind enum values.
Examples
Example 1: Transforming a string variable
[LinkKindTransform()]$Kinds = 'Text*'
$Kinds
TextInline
TextSelfReference
TextUsingReference
Example 2: Transforming a string parameter
function Get-LinkKind {
[cmdletbinding()]
param (
[LinkKindTransform()][LinkKind[]]$Kind
)
process {
$Kind
}
}
Get-LinkKind -Kind *Reference
TextSelfReference
TextUsingReference
ImageSelfReference
ImageUsingReference
Methods
Transform(EngineIntrinsics, Object)
- Tranforms the input object into one or more matching LinkKind enums.
Properties
None.
Last modified March 3, 2023: (MAINT) Rename Source folder to Projects (8b45aed)