...

Source file src/github.com/qri-io/jsonschema/draft2019_09_keywords.go

Documentation: github.com/qri-io/jsonschema

     1  package jsonschema
     2  
     3  // LoadDraft2019_09 loads the keywords for schema validation
     4  // based on draft2019_09
     5  // this is also the default keyword set loaded automatically
     6  // if no other is loaded
     7  func LoadDraft2019_09() {
     8  	// core keywords
     9  	RegisterKeyword("$schema", NewSchemaURI)
    10  	RegisterKeyword("$id", NewID)
    11  	RegisterKeyword("description", NewDescription)
    12  	RegisterKeyword("title", NewTitle)
    13  	RegisterKeyword("$comment", NewComment)
    14  	RegisterKeyword("examples", NewExamples)
    15  	RegisterKeyword("readOnly", NewReadOnly)
    16  	RegisterKeyword("writeOnly", NewWriteOnly)
    17  	RegisterKeyword("$ref", NewRef)
    18  	RegisterKeyword("$recursiveRef", NewRecursiveRef)
    19  	RegisterKeyword("$anchor", NewAnchor)
    20  	RegisterKeyword("$recursiveAnchor", NewRecursiveAnchor)
    21  	RegisterKeyword("$defs", NewDefs)
    22  	RegisterKeyword("default", NewDefault)
    23  
    24  	SetKeywordOrder("$ref", 0)
    25  	SetKeywordOrder("$recursiveRef", 0)
    26  
    27  	// standard keywords
    28  	RegisterKeyword("type", NewType)
    29  	RegisterKeyword("enum", NewEnum)
    30  	RegisterKeyword("const", NewConst)
    31  
    32  	// numeric keywords
    33  	RegisterKeyword("multipleOf", NewMultipleOf)
    34  	RegisterKeyword("maximum", NewMaximum)
    35  	RegisterKeyword("exclusiveMaximum", NewExclusiveMaximum)
    36  	RegisterKeyword("minimum", NewMinimum)
    37  	RegisterKeyword("exclusiveMinimum", NewExclusiveMinimum)
    38  
    39  	// string keywords
    40  	RegisterKeyword("maxLength", NewMaxLength)
    41  	RegisterKeyword("minLength", NewMinLength)
    42  	RegisterKeyword("pattern", NewPattern)
    43  
    44  	// boolean keywords
    45  	RegisterKeyword("allOf", NewAllOf)
    46  	RegisterKeyword("anyOf", NewAnyOf)
    47  	RegisterKeyword("oneOf", NewOneOf)
    48  	RegisterKeyword("not", NewNot)
    49  
    50  	// object keywords
    51  	RegisterKeyword("properties", NewProperties)
    52  	RegisterKeyword("patternProperties", NewPatternProperties)
    53  	RegisterKeyword("additionalProperties", NewAdditionalProperties)
    54  	RegisterKeyword("required", NewRequired)
    55  	RegisterKeyword("propertyNames", NewPropertyNames)
    56  	RegisterKeyword("maxProperties", NewMaxProperties)
    57  	RegisterKeyword("minProperties", NewMinProperties)
    58  	RegisterKeyword("dependentSchemas", NewDependentSchemas)
    59  	RegisterKeyword("dependentRequired", NewDependentRequired)
    60  	RegisterKeyword("unevaluatedProperties", NewUnevaluatedProperties)
    61  
    62  	SetKeywordOrder("properties", 2)
    63  	SetKeywordOrder("additionalProperties", 3)
    64  	SetKeywordOrder("unevaluatedProperties", 4)
    65  
    66  	// array keywords
    67  	RegisterKeyword("items", NewItems)
    68  	RegisterKeyword("additionalItems", NewAdditionalItems)
    69  	RegisterKeyword("maxItems", NewMaxItems)
    70  	RegisterKeyword("minItems", NewMinItems)
    71  	RegisterKeyword("uniqueItems", NewUniqueItems)
    72  	RegisterKeyword("contains", NewContains)
    73  	RegisterKeyword("maxContains", NewMaxContains)
    74  	RegisterKeyword("minContains", NewMinContains)
    75  	RegisterKeyword("unevaluatedItems", NewUnevaluatedItems)
    76  
    77  	SetKeywordOrder("maxContains", 2)
    78  	SetKeywordOrder("minContains", 2)
    79  	SetKeywordOrder("additionalItems", 3)
    80  	SetKeywordOrder("unevaluatedItems", 4)
    81  
    82  	// conditional keywords
    83  	RegisterKeyword("if", NewIf)
    84  	RegisterKeyword("then", NewThen)
    85  	RegisterKeyword("else", NewElse)
    86  
    87  	SetKeywordOrder("then", 2)
    88  	SetKeywordOrder("else", 2)
    89  
    90  	//optional formats
    91  	RegisterKeyword("format", NewFormat)
    92  }
    93  

View as plain text