-
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathAnyValid.ps1
More file actions
34 lines (29 loc) · 809 Bytes
/
AnyValid.ps1
File metadata and controls
34 lines (29 loc) · 809 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<#
.SYNOPSIS
Determines if any validation passes, given an object.
.DESCRIPTION
Determines if any of the `[ValidateScript]` or `[ValidatePattern]` attributes on a `[ScriptBlock]` passes, given an input.
Any input considered valid by a `[ValidateScript]` or `[ValidatePattern]` will be returned.
.EXAMPLE
{
[ValidatePattern("a")]
[ValidatePattern("b")]
param()
}.AnyValid("c","b","a")
.EXAMPLE
{
[ValidateScript({$_ % 2})]
[ValidateScript({-not ($_ % 3)})]
param()
}.AnyValid(1..10)
#>
param()
$allArgs = $args | & { process { $_ }}
, @(foreach ($attr in $this.Attributes) {
if (-not $attr.Validate) { continue }
foreach ($arg in $allArgs) {
if ($attr.Validate($arg)) {
$arg
}
}
})