models

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jun 27, 2022 License: GPL-3.0 Imports: 1 Imported by: 1

Documentation

Overview

Package models defines the domain models that model field relations and manipulation.

Index

Constants

View Source
const (
	CollectionPointer   = "*"
	CollectionSlice     = "[]"
	CollectionMap       = "map"
	CollectionChan      = "chan"
	CollectionFunc      = "func"
	CollectionInterface = "interface"
)

Collection refers to a category of types which indicate that a field's definition collects multiple fields (i.e `map[string]bool`).

View Source
const Pointer = '*'

Pointer represents the char representation of a pointer.

Variables

This section is empty.

Functions

This section is empty.

Types

type Field

type Field struct {
	// VariableName represents name that is used to assign the field.
	//
	// This value will always be unique in the context of the application.
	// TypeField variable names do not contain '.' (i.e 'tA' in 'tA.UserID').
	// Field variable names are defined by their specifier (i.e '.UserID' in 'domain.Account.UserID').
	VariableName string

	// Import represents the file that field was imported from.
	Import string

	// Package represents the package the field is defined in (i.e `log` in `log.Logger`).
	Package string

	// Name represents the name of the field (i.e `ID` in `ID int`).
	Name string

	// Definition represents the type definition of the field (i.e `int` in `ID int`, `Logger` in `log.Logger`).
	Definition string

	// The tags defined in a struct field (i.e `json:"tag,omitempty"`)
	// map[tag]map[name][]options (i.e map[json]map[tag]["omitempty"])
	Tags map[string]map[string][]string

	// The type or field that contains this field.
	Parent *Field

	// The field that this field will be copied from (or nil).
	// Set in the matcher.
	From *Field

	// The field that this field will be copied to (or nil).
	// Set in the matcher.
	To *Field

	// The fields of this field.
	Fields []*Field

	// The custom options of a field.
	Options FieldOptions
}

Field represents a field to be copied to/from. A field's struct properties are set in the parser unless its stated otherwise.

func (*Field) AllFields added in v0.2.0

func (f *Field) AllFields(fields []*Field, cyclic map[*Field]bool) []*Field

AllFields gets all the fields in the scope of a field (including itself).

func (*Field) Deepcopy added in v0.3.3

func (f *Field) Deepcopy(cyclic map[*Field]bool) *Field

Deepcopy returns a new field with copied properties (excluding Parent, To, and From fields).

func (*Field) FullDefinition added in v0.3.1

func (f *Field) FullDefinition() string

FullDefinition returns the full definition of a field including its package.

func (*Field) FullDefinitionWithoutPointer added in v0.3.3

func (f *Field) FullDefinitionWithoutPointer() string

FullDefinition returns the full definition of a field including its package without its pointer(s) (i.e domain.Account).

func (*Field) FullName added in v0.2.0

func (f *Field) FullName() string

FullName returns the full name of a field including its parents (i.e *domain.Account.User.ID).

func (*Field) FullNameWithoutPointer added in v0.3.2

func (f *Field) FullNameWithoutPointer(name string) string

FullNameWithoutPointer returns the full name of a field including its parents without the pointer (i.e domain.Account.User.ID).

func (*Field) FullVariableName added in v0.2.0

func (f *Field) FullVariableName(name string) string

FullVariableName returns the full variable name of a field (i.e tA.User.UserID).

func (*Field) IsAlias added in v0.3.3

func (f *Field) IsAlias() bool

IsAlias determines whether the field is a type alias.

func (*Field) IsArray added in v0.3.0

func (f *Field) IsArray() bool

IsArray returns whether the field is an array.

func (*Field) IsBasic added in v0.3.3

func (f *Field) IsBasic() bool

IsBasic determines whether the field is a basic type.

func (*Field) IsChan added in v0.3.0

func (f *Field) IsChan() bool

IsMap returns whether the field is a chan.

func (*Field) IsCollection added in v0.3.2

func (f *Field) IsCollection() bool

IsCollection returns whether the field is a collection.

func (*Field) IsComposite added in v0.3.2

func (f *Field) IsComposite() bool

IsComposite returns whether the field is a composite type: array, slice, map, chan.

func (*Field) IsFunc added in v0.3.2

func (f *Field) IsFunc() bool

IsFunc returns whether the field is a function.

func (*Field) IsInterface added in v0.3.0

func (f *Field) IsInterface() bool

IsInterface returns whether the field is an interface.

func (*Field) IsMap added in v0.3.0

func (f *Field) IsMap() bool

IsMap returns whether the field is a map.

func (*Field) IsPointer added in v0.2.0

func (f *Field) IsPointer() bool

IsPointer returns whether the field is a pointer.

func (*Field) IsSlice added in v0.3.0

func (f *Field) IsSlice() bool

IsSlice returns whether the field is a slice.

func (*Field) IsType added in v0.2.0

func (f *Field) IsType() bool

IsType returns whether the field is a type.

func (*Field) String

func (f *Field) String() string

type FieldOptions

type FieldOptions struct {
	// The function the field is converted with (as a parameter).
	Convert string

	// The field to map this field to, if any.
	Map string

	// The tag to map this field with, if any.
	Tag string

	// The level at which sub-fields are discovered.
	Depth int

	// Whether the field should be explicitly automatched.
	Automatch bool

	// Whether the field should be deepcopied.
	Deepcopy bool
}

FieldOptions represent options for a Field.

type Function

type Function struct {
	Name    string          // The name of the function.
	Options FunctionOptions // The custom options of a function.
	From    []Type          // The types to copy fields from.
	To      []Type          // The types to copy fields to.
}

Function represents the properties of a generated function.

type FunctionOptions

type FunctionOptions struct {
	Custom map[string][]string // The custom options of a function (map[option]values).
	Manual bool                // Whether the function uses a manual matcher (as opposed to an Automatcher).
}

FunctionOptions represent options for a Function.

type Generator

type Generator struct {
	Functions []Function       // The functions to generate.
	Options   GeneratorOptions // The custom options for the generator.
	Setpath   string           // The filepath the setup file is located in.
	Outpath   string           // The filepath the generated code is output to.
	Tempath   string           // The filepath for the template used to generate code.
	Keep      []byte           // The code that is kept from the setup file.
}

Generator represents a code generator.

type GeneratorOptions added in v0.2.0

type GeneratorOptions struct {
	Custom map[string]interface{} // The custom options of a generator.
}

GeneratorOptions represent options for a Generator.

type Type

type Type struct {
	// Field represents field information for the type.
	Field *Field
}

Type represents a field that isn't contained.

func (Type) Name

func (t Type) Name() string

Name gets the name of the type field.

func (Type) String added in v0.2.0

func (t Type) String() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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