Skip to content

Commit e70e2b7

Browse files
Task-58 : Extended the class with a new find method that include a boolean for isDefinition. Updated find-element to accept -IsDefinition as a param, and logic to iterate over those definitions.
1 parent cd77840 commit e70e2b7

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

schema/schema.psm1

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,9 @@ class schemaDocument {
255255
[object]Find([string]$item) {
256256
return (Find-SchemaElement -Schema $this -ElementName $item)
257257
}
258+
[object]Find([string]$item, [boolean]$IsDefinition) {
259+
return (Find-SchemaElement -Schema $this -ElementName $item -Isdefinition:$IsDefinition)
260+
}
258261
[object]ToString() {
259262
return ($this | Select-Object *, @{Name = '$id'; Exp = { $_.id } }, @{Name = '$schema'; Exp = { $_.schema } }, @{Name = '$definitions'; Exp = { $_.definitions } } -ExcludeProperty id, schema, definitions | ConvertTo-Json)
260263
}
@@ -614,14 +617,18 @@ function Find-Element {
614617
[parameter(Mandatory = $true, ParameterSetName = 'name')]
615618
[parameter(Mandatory = $true, ParameterSetName = 'type')]
616619
[parameter(Mandatory = $true, ParameterSetName = 'path')]
620+
[parameter(Mandatory = $true, ParameterSetName = 'definitions')]
617621
$Schema,
618622
[parameter(Mandatory = $false, ParameterSetName = 'name')]
623+
[parameter(Mandatory = $false, ParameterSetName = 'definitions')]
619624
[string]$ElementName,
620625
[parameter(Mandatory = $false, ParameterSetName = 'type')]
621626
[ValidateSet('schemaString', 'schemaNumber', 'schemaInteger', 'schemaObject', 'schemaBoolean', 'schemaArray', 'schemaDocument')]
622627
[string]$ElementType,
623628
[parameter(Mandatory = $false, ParameterSetName = 'path')]
624-
[string]$ElementPath
629+
[string]$ElementPath,
630+
[parameter(Mandatory = $true, ParameterSetName = 'definitions')]
631+
[switch]$IsDefinition
625632
)
626633
switch ($PSCmdlet.ParameterSetName) {
627634
'name' {
@@ -704,6 +711,21 @@ function Find-Element {
704711
}
705712
}
706713
}
714+
'definitions' {
715+
Write-Verbose "Definition Search"
716+
if ($schema.GetType().Name -eq 'schemaDocument') {
717+
if ($schema.definitions.psobject.properties.name.Contains($ElementName)) {
718+
return $Schema.definitions.$ElementName
719+
}
720+
else {
721+
$keys = $schema.definitions.psobject.properties.name
722+
foreach ($key in $keys) {
723+
write-verbose $key
724+
Find-SchemaElement -Schema ($Schema) -ElementName $key -IsDefinition
725+
}
726+
}
727+
}
728+
}
707729
}
708730
}
709731
function ConvertTo-Element {

0 commit comments

Comments
 (0)