Documentation
¶
Index ¶
- Variables
- func DepthMap(roots []*jsonschema.Schema, classes []*domain.Class, ...) map[*domain.Class]int
- func NewCompiler(baseURI string) (*jsonschema.Compiler, error)
- func ReadSchema(compiler *jsonschema.Compiler, filepath string, strict bool) (*jsonschema.Schema, error)
- type Cache
- type ClassParser
- func (p *ClassParser) Classes() ([]*domain.Class, error)
- func (p *ClassParser) NewClass(schema *jsonschema.Schema) (*domain.Class, error)
- func (p *ClassParser) NewProperty(parent *jsonschema.Schema, name string, value *jsonschema.Schema) (*domain.Property, error)
- func (p *ClassParser) PropertyRef(parent *jsonschema.Schema, value *jsonschema.Schema) (*jsonschema.Schema, error)
- func (p *ClassParser) Relations() ([]*domain.Relation, error)
- type Loader
- type MapCache
- type Parser
- type Reference
- type ReferenceType
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidGlob = errors.New(`invalid glob pattern`)
ErrInvalidGlob is returned when (one of the) glob patterns is invalid
var ErrParsingSchema = errors.New(`could not parse schema`)
ErrParsingSchema is returned when the jsonschema compiler could not parse the json file
var ErrReadFile = errors.New(`cannot read file`)
ErrReadFile is returned when a file cannot be
var ErrUnknownSchema = errors.New("unknown schema")
ErrUnknownSchema is returned when the schema is not resolved or found
Functions ¶
func DepthMap ¶
func DepthMap(roots []*jsonschema.Schema, classes []*domain.Class, relations []*domain.Relation) map[*domain.Class]int
DepthMap w.r.t. the provided jsonschema.Schema roots that are directly parsed from the glob patterns. Each directly referenced file (e.g. some/file/schema.json) must have a depth of 0. For each not directly referenced file the distance is the shortest distance from any root to that file using the classical Dijkstra's shortest-path algorithm.
func NewCompiler ¶
func NewCompiler(baseURI string) (*jsonschema.Compiler, error)
NewCompiler for baseURI. If the baseURI is an empty string "" the current working directory is used.
func ReadSchema ¶
func ReadSchema(compiler *jsonschema.Compiler, filepath string, strict bool) (*jsonschema.Schema, error)
ReadSchema from file into a jsonschema.Schema
Types ¶
type Cache ¶
type Cache interface { // Process a schema Process(schema *jsonschema.Schema) // HasProcessed a schema HasProcessed(schema *jsonschema.Schema) bool // Schemas stored in Cache Schemas() []*jsonschema.Schema }
Cache tracks processed jsonschema.Schema's
type ClassParser ¶
type ClassParser struct { *Parser // contains filtered or unexported fields }
ClassParser tracks the transformation from jsonschema.Schema to Class
func (*ClassParser) Classes ¶
func (p *ClassParser) Classes() ([]*domain.Class, error)
Classes returns the parsed Class slice that can be used by transformations
func (*ClassParser) NewClass ¶
func (p *ClassParser) NewClass(schema *jsonschema.Schema) (*domain.Class, error)
NewClass for a jsonschema.Schema
func (*ClassParser) NewProperty ¶
func (p *ClassParser) NewProperty(parent *jsonschema.Schema, name string, value *jsonschema.Schema) (*domain.Property, error)
NewProperty for a Class based on its property jsonschema.Schema
func (*ClassParser) PropertyRef ¶
func (p *ClassParser) PropertyRef(parent *jsonschema.Schema, value *jsonschema.Schema) (*jsonschema.Schema, error)
PropertyRef handles properties which are defined with a $ref (possibly with an anchor '#")
type Loader ¶
type Loader func(url string) (io.ReadCloser, error)
Loader used by jsonschema.Compiler::Loaders
func NewFileLoader ¶
NewFileLoader constructs a loader that can read from disk
type MapCache ¶
type MapCache struct {
// contains filtered or unexported fields
}
MapCache tracks processed jsonschema.Schema's
func (*MapCache) HasProcessed ¶
func (c *MapCache) HasProcessed(schema *jsonschema.Schema) bool
HasProcessed returns true iff a jsonschema.Schema is already processed
func (*MapCache) Process ¶
func (c *MapCache) Process(schema *jsonschema.Schema)
Process marks a jsonschema.Schema as processed
func (*MapCache) Schemas ¶
func (c *MapCache) Schemas() []*jsonschema.Schema
Schemas stored in Cache
type Parser ¶
type Parser struct { // Globs to search for JSON files Globs []string // StrictMode will error if a JSON file contained in the Globs cannot be parsed to a jsonschema.Schema // default false where its logged as a warning StrictMode bool // BaseURI used for resolving schemas BaseURI string // Cache implementation to process nested object's and $defs Cache Cache // Depth of external $refs to follow (or -1 to follow all) // 0 implies only referenced schemas Depth int // Compiler used to load the jsonschema.Schema's Compiler *jsonschema.Compiler // contains filtered or unexported fields }
Parser for .json files to execute transforms
func (*Parser) Relations ¶
Relations returns the parsed Reference's between various domain.Class and domain.Property
func (*Parser) Schemas ¶
func (p *Parser) Schemas() ([]*jsonschema.Schema, error)
Schemas read by the parser
func (*Parser) SetBaseURI ¶
SetBaseURI from which file:// $id's are resolved
type Reference ¶
type Reference struct { // ReferenceType can be oneOf, $ref, allOf, etc Type ReferenceType // From which jsonschema.Schema the relation started, i.e. with $ref From *jsonschema.Schema FromParent *jsonschema.Schema // To which jsonschema.Schema the relation points (which could be a jsonschema.Schema or $anchor) To *jsonschema.Schema ToParent *jsonschema.Schema }
Reference between two jsonschema.Schema's
type ReferenceType ¶
type ReferenceType string
const AllOf ReferenceType = "allOf"
AllOf between schemas using oneOf
const AnyOf ReferenceType = "anyOf"
AnyOf between schemas using oneOf
const OneOf ReferenceType = "oneOf"
OneOf between schemas using oneOf
const Ref ReferenceType = "$ref"
Ref between schemas using $ref