private/Test-GlyRuleSelector.ps1
|
function Test-GlyRuleSelector { param( [Parameter(Mandatory)] [GlySelector] $Selector, [Parameter(Mandatory)] [System.IO.FileSystemInfo] $InputObject ) $kind = Get-GlyFileSystemKind -InputObject $InputObject if ($null -ne $Selector.Kind -and $Selector.Kind.ToString() -cne $kind) { return $false } if ($null -ne $Selector.Name -and $Selector.Name -cne $InputObject.Name) { return $false } if ($Selector.NormalizedExtension.Count -gt 0) { $name = $InputObject.Name $matched = $false foreach ($extension in $Selector.NormalizedExtension) { if ($name.EndsWith($extension, [System.StringComparison]::OrdinalIgnoreCase)) { $matched = $true break } } if (-not $matched) { return $false } } if ($Selector.GlobPattern.Count -gt 0) { $globMatched = $false foreach ($pattern in $Selector.GlobPattern) { if ($pattern.IsMatch($InputObject.Name) -or $pattern.IsMatch($InputObject.FullName)) { $globMatched = $true break } } if (-not $globMatched) { return $false } } if ($Selector.Attributes.Count -gt 0) { foreach ($attribute in $Selector.Attributes) { if (($InputObject.Attributes -band $attribute) -eq 0) { return $false } } } return $true } |