private/!SynapseObjectName.class.ps1
class SynapseObjectName { [string] $Name [string] $Type [string] $Folder SynapseObjectName ([string] $Name, [string] $Type) { [SynapseObject]::AssertType($Type) $this.Name = $Name $this.Type = $Type } SynapseObjectName ([string] $Name, [string] $Type, [string] $Folder) { [SynapseObject]::AssertType($Type) $this.Name = $Name $this.Type = $Type $this.Folder = $Folder } SynapseObjectName ([string] $FullName) { $m = [regex]::matches($FullName, '([a-zA-Z]+)\.([a-zA-Z 0-9\-_]+)@?(.*)') if ($m.Success -eq $false) { throw "ASWT0028: Expected format of name for 'FullName' input parameter is: objectType.objectName[@folderName]" } [SynapseObject]::AssertType($m.Groups[1].Value) $this.Type = $m.Groups[1].Value $this.Name = $m.Groups[2].Value $this.Folder = $m.Groups[3].Value } [String] FullName ([boolean] $quoted) { if ($quoted) { return "[$($this.Type)].[$($this.Name)]" } else { return "$($this.Type).$($this.Name)" } } [String] FullNameWithFolder () { if ($this.Folder.Length -gt 0) { return "$($this.Type).$($this.Name)@$($this.Folder)" } else { return "$($this.Type).$($this.Name)" } } [String] FullName () { return $this.FullName($false) } [String] FullNameQuoted () { return $this.FullName($true) } [Boolean] IsNameMatch ([array]$wildcardPatterns) { $fullname = $this.FullName() $r = $wildcardPatterns | Where-Object { $fullname -like $_ } return $null -ne $r } [Boolean] IsNameExcluded ([SynapsePublishOption] $opt) { $fullname = $this.FullNameWithFolder() # One can exclude objects by listing them explicitly in Excludes collection, ... $excPatterns = $opt.Excludes.Keys $r = $excPatterns | Where-Object { $fullname -like $_ } if ($null -ne $r) { # Means: object is excluded if matches any item in (Excludes) collection return $true } # ... or by listing them implicitly in Includes collection: $incPatterns = $opt.Includes.Keys if ($incPatterns.Count -eq 0) { # If no items = all objects match => object is not excluded return $false } $r = $incPatterns | Where-Object { $fullname -like $_ } # Means: object is excluded if not match any item in (Includes) collection return ($null -eq $r) } } |