models

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Apr 14, 2022 License: GPL-3.0 Imports: 1 Imported by: 22

Documentation

Overview

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

Index

Constants

This section is empty.

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

	// Container represents the container that contains the field's definition (in string format).
	//
	// This can be any of the following examples or `nil“.
	// pointer(s): **
	// array: [5]
	// slice: []
	// map: map
	// chan: chan
	Container 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

	// Collection represents the type of collection that this field represents.
	//
	// a "struct" collection contain subfields with any other type.
	// an "interface" collection contains `func` subfields.
	Collection 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) []*Field

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

func (*Field) FullName added in v0.2.0

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

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

func (*Field) FullNameWithoutContainer added in v0.3.0

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

FullNameWithoutContainer gets the full name of a field including its parents without the container (i.e domain.Account.User.ID).

func (*Field) FullVariableName added in v0.2.0

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

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

func (*Field) IsArray added in v0.3.0

func (f *Field) IsArray() bool

IsArray returns whether the field is an array. assumes the caller is checking a valid container.

func (*Field) IsChan added in v0.3.0

func (f *Field) IsChan() bool

IsMap returns whether the field is a chan. assumes the caller is checking a valid container.

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. assumes the caller is checking a valid container.

func (*Field) IsNoContainer added in v0.3.0

func (f *Field) IsNoContainer() bool

IsNoContainer returns whether the field has no container.

func (*Field) IsPointer added in v0.2.0

func (f *Field) IsPointer() bool

IsPointer returns whether the field is a pointer of a type definition.

func (*Field) IsSlice added in v0.3.0

func (f *Field) IsSlice() bool

IsSlice returns whether the field is a slice.

func (*Field) IsStruct added in v0.3.0

func (f *Field) IsStruct() bool

isStruct returns whether the field is a struct.

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.
	Loadpath  string           // The filepath the loader file is located in.
	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 *Field // The field information for the type.
}

Type represents a field that isn't contained.

func (Type) ParameterName added in v0.2.0

func (t Type) ParameterName() string

ParameterName gets the parameter name of the type.

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