Source File
annotations.go
Belonging Package
github.com/google/jsonschema-go/jsonschema
// Copyright 2025 The JSON Schema Go Project Authors. All rights reserved.// Use of this source code is governed by an MIT-style// license that can be found in the LICENSE file.package jsonschemaimport// An annotations tracks certain properties computed by keywords that are used by validation.// ("Annotation" is the spec's term.)// In particular, the unevaluatedItems and unevaluatedProperties keywords need to know which// items and properties were evaluated (validated successfully).type annotations struct {allItems bool // all items were evaluatedendIndex int // 1+largest index evaluated by prefixItemsevaluatedIndexes map[int]bool // set of indexes evaluated by containsallProperties bool // all properties were evaluatedevaluatedProperties map[string]bool // set of properties evaluated by various keywords}// noteIndex marks i as evaluated.func ( *annotations) ( int) {if .evaluatedIndexes == nil {.evaluatedIndexes = map[int]bool{}}.evaluatedIndexes[] = true}// noteEndIndex marks items with index less than end as evaluated.func ( *annotations) ( int) {if > .endIndex {.endIndex =}}// noteProperty marks prop as evaluated.func ( *annotations) ( string) {if .evaluatedProperties == nil {.evaluatedProperties = map[string]bool{}}.evaluatedProperties[] = true}// noteProperties marks all the properties in props as evaluated.func ( *annotations) ( map[string]bool) {.evaluatedProperties = merge(.evaluatedProperties, )}// merge adds b's annotations to a.// a must not be nil.func ( *annotations) ( *annotations) {if == nil {return}if .allItems {.allItems = true}if .endIndex > .endIndex {.endIndex = .endIndex}.evaluatedIndexes = merge(.evaluatedIndexes, .evaluatedIndexes)if .allProperties {.allProperties = true}.evaluatedProperties = merge(.evaluatedProperties, .evaluatedProperties)}// merge adds t's keys to s and returns s.// If s is nil, it returns a copy of t.func merge[ comparable](, map[]bool) map[]bool {if == nil {return maps.Clone()}maps.Copy(, )return}
![]() |
The pages are generated with Golds v0.8.4. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |