en-us/about_Schema_Classes.help.txt

TOPIC
    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