-
-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathAllValidObject.ps1
More file actions
36 lines (31 loc) · 916 Bytes
/
AllValidObject.ps1
File metadata and controls
36 lines (31 loc) · 916 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
35
36
<#
.SYNOPSIS
Determines if all validation matches, given an object.
.DESCRIPTION
Determines if all of the `[ValidateScript]` attributes on a `[ScriptBlock]` pass, given one or more inputs.
Any input considered valid by all `[ValidateScript]` will be returned.
If there is no validation present, no objects will be returned.
.EXAMPLE
{
[ValidateScript({$_ % 2})]
[ValidateScript({-not ($_ % 3)})]
param()
}.AllValidObject(1..10)
.EXAMPLE
#>
param()
$allArgs = $args | & { process { $_ }}
, @(
:nextArg foreach ($arg in $allArgs) {
$validatedArg = $false
foreach ($attr in $this.Attributes) {
if (-not $attr.Validate) { continue }
if ($attr -isnot [ValidateScript]) { continue }
if (-not $attr.Validate($arg)) { continue nextArg}
else { $validatedArg = $true}
}
if ($validatedArg) {
$arg
}
}
)