Skip to content

Latest commit

History

History
205 lines (142 loc) · 7.18 KB

File metadata and controls

205 lines (142 loc) · 7.18 KB

Schema Classes

about_Schema_Classes

SHORT DESCRIPTION

This module uses several custom classes in order to provide flexibility and functionality to the module and experience as a whole.

LONG DESCRIPTION

This module uses several custom classes in order to provide flexibility and functionality to the module and experience as a whole. The SchemaModule classes are derived from the JSON Schema reference pages for draft 7.0. They contain all the attributes for each object as well as some support methods to make working with the objects easier.

As they are PowerShell Custom Types, they can't be used directly within PowerShell. In order to take advantage of these types in your own scripts you may need to add a "using" statement, or leverage the New-SchemaElement function to instantiate the objects in the PowerShell console.

Classes

The SchemaModule classes are derived from the JSON Schema reference pages for draft 7.0. They contain all the attributes for each object as well as some support methods to make working with the objects easier.

schemaDocument

This class is really modified object that contains the $schema attribute as well as validation on what values can be present for that attribute.

Schema Object

Schema Keyword

Schema Types

schemaString

The string type is used for strings of text. It may contain Unicode characters.

Schema String

Schema Types

schemaInteger

The integer type is used for integral numbers. In PowerShell this is an int32

Schema Integer

Schema Types

schemaNumber

The number type is used for any numeric type, either integers or floating point numbers. In PowerShell this is a double.

Schema Number

Schema Types

schemaBoolean

The boolean type matches only two special values: true and false. Note that values that evaluate to true or false, such as 1 and 0, are not accepted by the schema.

Schema Boolean

Schema Types

schemaObject

Objects are the mapping type in JSON. They map "keys" to "values". In JSON, the "keys" must always be strings. Each of these pairs is conventionally referred to as a "property".

Schema Object

Schema Types

schemaDefinition

Sometimes we have small subschemas that are only intended for use in the current schema and it doesn’t make sense to define them as separate schemas.

Schema Definition

Schema Types

schemaArray

Arrays are used for ordered elements. In JSON, each element in an array may be of a different type.

Schema Array

Schema Types

EXAMPLES

String =New-SchemaElement-Type string
$String|Get-Member
TypeName: schemaString
Name MemberType Definition
------------------------
AddEnum Method void AddEnum(string enum)
AddExample Method void AddExample(string example)
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method System.Object ToString()
default Property string default {get;set;}
description Property string description {get;set;}
enum Property string[] enum {get;set;}
examples Property string[] examples {get;set;}
id Property string id {get;set;}
maxLength Property int maxLength {get;set;}
minLength Property int minLength {get;set;}
pattern Property string pattern {get;set;}
ref Property string ref {get;set;}
title Property string title {get;set;}
type Property string type {get;set;}
$String.AddEnum(@('cat','dog'))
$String|ConvertTo-Json
{
"type": "string","examples": [
],"id": null,"ref": null,"minLength": 0,"maxLength": 0,"pattern": null,"enum": [
"cat dog"
],"title": null,"description": null,"default": null
}
#
This example shows how to create an object and access one of the methods
$Schema=Get-SchemaDocument-Path 'D:\TEMP\test\schema-sample.json'$Schema|Get-Member
TypeName: schemaDocument
Name MemberType Definition
------------------------
AddProperty Method System.Object AddProperty(System.Object property)
Equals Method bool Equals(System.Object obj)
Find Method System.Object Find(string item)
GetHashCode Method int GetHashCode()
GetProperty Method System.Object GetProperty(string PropertyName)
GetType Method type GetType()
ToObject Method System.Object ToObject(), System.Object ToObject(int Depth), System.Object ToObject(string PropertyName), System.Object ToObject(string PropertyName, int Depth)
ToString Method System.Object ToString()
additionalProperties Property bool additionalProperties {get;set;}
default Property System.Object default {get;set;}
definitions Property System.Object definitions {get;set;}
description Property string description {get;set;}
id Property string id {get;set;}
properties Property System.Object properties {get;set;}
required Property string[] required {get;set;}
schema Property string schema {get;set;}
title Property string title {get;set;}
type Property string type {get;set;}
$Schema.Find('printers')
$id title description default items
-------------------------------#/properties/contents/items/anyOf/0/properties/printers The printers schema An explanation about the purpose of this instance. {} @{anyOf=System.Object[]}
This is another example of using methods within a created object

SEE ALSO

Project Site

Github Repo