inputs

package
v0.0.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 13, 2022 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CapitaliseFirstLetter

func CapitaliseFirstLetter(s string) string

func Contains

func Contains(s []string, e string) bool

func GetGolangName

func GetGolangName(s string) string

func GetOrderedFieldNames

func GetOrderedFieldNames(m map[string]*Field) []string

func GetOrderedStructNames

func GetOrderedStructNames(m map[string]*Struct) []string

func IsNotAGoNameCharacter

func IsNotAGoNameCharacter(r rune) bool

func LineAndCharacter

func LineAndCharacter(bytes []byte, offset int) (line int, character int, err error)

func Output

func Output(w io.Writer, g *Generator, pkg string, originatingPaths []string, debug bool) error

Output generates code and writes to w.

Types

type AdditionalProperties

type AdditionalProperties Schema

AdditionalProperties handles additional properties present in the JSON schema.

func (*AdditionalProperties) UnmarshalJSON

func (ap *AdditionalProperties) UnmarshalJSON(data []byte) error

UnmarshalJSON handles unmarshalling AdditionalProperties from JSON.

type Field

type Field struct {
	Id string
	// The golang name, e.g. "Address1"
	Name string
	// The JSON name, e.g. "address1"
	JSONName string
	// The golang type of the field, e.g. a built-in type like "string" or the name of a struct generated
	// from the JSON schema.
	Type *TypeInfo
	// Required is set to true when the field is required.
	Required     bool
	Descriptions []string
}

Field defines the data required to generate a field in Go.

func NewField added in v0.0.7

func NewField(name, jsonName string, info *TypeInfo, required bool, descriptions []string) *Field

type Generator

type Generator struct {
	Structs map[string]*Struct
	Aliases map[string]*Field
	// contains filtered or unexported fields
}

Generator will produce structs from the JSON schema.

func New

func New(schemas ...*Schema) *Generator

New creates an instance of a generator which will produce structs.

func (*Generator) CreateTypes

func (g *Generator) CreateTypes() (err error)

CreateTypes creates types from the JSON schemas, keyed by the golang name.

type RefResolver

type RefResolver struct {
	// contains filtered or unexported fields
}

RefResolver allows references to be resolved.

func NewRefResolver

func NewRefResolver(schemas []*Schema) *RefResolver

NewRefResolver creates a reference resolver.

func (*RefResolver) GetPath

func (r *RefResolver) GetPath(schema *Schema) string

GetPath generates a path to given schema.

func (*RefResolver) GetSchemaByReference

func (r *RefResolver) GetSchemaByReference(schema *Schema) (*Schema, error)

GetSchemaByReference returns the schema.

func (*RefResolver) Init

func (r *RefResolver) Init() error

Init the resolver.

func (*RefResolver) InsertURI

func (r *RefResolver) InsertURI(uri string, schema *Schema) error

InsertURI to the references.

type Schema

type Schema struct {
	// SchemaType identifies the schema version.
	// http://json-schema.org/draft-07/json-schema-core.html#rfc.section.7
	SchemaType string `json:"$schema"`

	// ID{04,06} is the schema URI identifier.
	// http://json-schema.org/draft-07/json-schema-core.html#rfc.section.8.2
	ID04 string `json:"id"`  // up to draft-04
	ID06 string `json:"$id"` // from draft-06 onwards

	// Title and Description state the intent of the schema.
	Title       string
	Description string

	// TypeValue is the schema instance type.
	// http://json-schema.org/draft-07/json-schema-validation.html#rfc.section.6.1.1
	TypeValue interface{} `json:"type"`

	// Definitions are inline re-usable schemas.
	// http://json-schema.org/draft-07/json-schema-validation.html#rfc.section.9
	Definitions map[string]*Schema

	// Properties, Required and AdditionalProperties describe an object's child instances.
	// http://json-schema.org/draft-07/json-schema-validation.html#rfc.section.6.5
	Properties map[string]*Schema
	Required   []string

	// "additionalProperties": {...}
	AdditionalProperties *AdditionalProperties

	// "additionalProperties": false
	AdditionalPropertiesBool *bool `json:"-"`

	AnyOf []*Schema
	AllOf []*Schema
	OneOf []*Schema

	// Default can be used to supply a default JSON value associated with a particular schema.
	// http://json-schema.org/draft-07/json-schema-validation.html#rfc.section.10.2
	Default interface{}

	// Examples ...
	// http://json-schema.org/draft-07/json-schema-validation.html#rfc.section.10.4
	Examples []interface{}

	// Reference is a URI reference to a schema.
	// http://json-schema.org/draft-07/json-schema-core.html#rfc.section.8
	Reference string `json:"$ref"`

	// Items represents the types that are permitted in the array.
	// http://json-schema.org/draft-07/json-schema-validation.html#rfc.section.6.4
	Items *Schema

	// NameCount is the number of times the instance name was encountered across the schema.
	NameCount int `json:"-" `

	// Parent schema
	Parent *Schema `json:"-" `

	// Key of this schema i.e. { "JSONKey": { "type": "object", ....
	JSONKey string `json:"-" `

	// path element - for creating a path by traversing back to the root element
	PathElement string `json:"-"`

	// calculated struct name of this object, cached here
	GeneratedType *TypeInfo `json:"-"`
}

Schema represents JSON schema.

func Parse

func Parse(schema string, uri *url.URL) (*Schema, error)

Parse parses a JSON schema from a string.

func ParseWithSchemaKeyRequired

func ParseWithSchemaKeyRequired(schema string, uri *url.URL, schemaKeyRequired bool) (*Schema, error)

ParseWithSchemaKeyRequired parses a JSON schema from a string with a flag to set whether the schema key is required.

func ReadInputFiles

func ReadInputFiles(inputFiles []string, schemaKeyRequired bool) ([]*Schema, error)

ReadInputFiles from disk and convert to JSON schema.

func (*Schema) FixMissingTypeValue

func (schema *Schema) FixMissingTypeValue()

FixMissingTypeValue is backwards compatible, guessing the users intention when they didn't specify a type.

func (*Schema) GetRoot

func (schema *Schema) GetRoot() *Schema

GetRoot returns the root schema.

func (*Schema) ID

func (schema *Schema) ID() string

ID returns the schema URI id.

func (*Schema) Init

func (schema *Schema) Init()

Init schema.

func (*Schema) IsRoot

func (schema *Schema) IsRoot() bool

IsRoot returns true when the schema is the root.

func (*Schema) MultiType

func (schema *Schema) MultiType() ([]string, bool)

MultiType returns "type" as an array

func (*Schema) Type

func (schema *Schema) Type() (firstOrDefault string, multiple bool)

Type returns the type which is permitted or an empty string if the type field is missing. The 'type' field in JSON schema also allows for a single string value or an array of strings. Examples:

"a" => "a", false
[] => "", false
["a"] => "a", false
["a", "b"] => "a", true

type Struct

type Struct struct {
	// The ID within the JSON schema, e.g. #/definitions/address
	ID string
	// The golang type information, e.g. "Address" or "*Address"
	TypeInfo *TypeInfo

	// Description of the struct
	Description string
	Fields      map[string]*Field

	GenerateCode   bool
	AdditionalType *TypeInfo
}

Struct defines the data required to generate a struct in Go.

type TypeInfo added in v0.0.7

type TypeInfo struct {
	Id            string
	Name          string
	PrimitiveType string
	SubType       *TypeInfo
	IsPointer     bool
	// contains filtered or unexported fields
}

func NewTypeInfo added in v0.0.7

func NewTypeInfo(name string, primitiveType string, isPointer bool, subType *TypeInfo) *TypeInfo

func (*TypeInfo) AddAliasFor added in v0.0.8

func (p *TypeInfo) AddAliasFor(name string)

func (*TypeInfo) AddFieldReference added in v0.0.7

func (p *TypeInfo) AddFieldReference(f *Field)

func (*TypeInfo) GetTypeAsString added in v0.0.7

func (p *TypeInfo) GetTypeAsString() string

func (*TypeInfo) IsAlias added in v0.0.8

func (p *TypeInfo) IsAlias() bool

func (*TypeInfo) LongName added in v0.0.7

func (p *TypeInfo) LongName() string

func (*TypeInfo) RemoveFieldReference added in v0.0.7

func (p *TypeInfo) RemoveFieldReference(f *Field) bool

func (*TypeInfo) Replaces added in v0.0.7

func (p *TypeInfo) Replaces(old *TypeInfo)

func (*TypeInfo) ShortName added in v0.0.7

func (p *TypeInfo) ShortName() string

func (*TypeInfo) String added in v0.0.7

func (p *TypeInfo) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL