models

package
v0.0.0-...-429302c Latest Latest
Warning

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

Go to latest
Published: Sep 8, 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 ConvertOption

type ConvertOption struct {
	// The converter function name.
	Ident string

	// Whether the converter also returns an error.
	Error bool
}

func (ConvertOption) IsEmpty

func (c ConvertOption) IsEmpty() bool

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

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

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

func (f *Field) FullDefinition() string

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

func (*Field) FullDefinitionWithoutPointer

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

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

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

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

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

func (*Field) IsAlias

func (f *Field) IsAlias() bool

IsAlias determines whether the field is a type alias.

func (*Field) IsArray

func (f *Field) IsArray() bool

IsArray returns whether the field is an array.

func (*Field) IsBasic

func (f *Field) IsBasic() bool

IsBasic determines whether the field is a basic type.

func (*Field) IsChan

func (f *Field) IsChan() bool

IsMap returns whether the field is a chan.

func (*Field) IsCollection

func (f *Field) IsCollection() bool

IsCollection returns whether the field is a collection.

func (*Field) IsComposite

func (f *Field) IsComposite() bool

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

func (*Field) IsFunc

func (f *Field) IsFunc() bool

IsFunc returns whether the field is a function.

func (*Field) IsInterface

func (f *Field) IsInterface() bool

IsInterface returns whether the field is an interface.

func (*Field) IsMap

func (f *Field) IsMap() bool

IsMap returns whether the field is a map.

func (*Field) IsPointer

func (f *Field) IsPointer() bool

IsPointer returns whether the field is a pointer.

func (*Field) IsSlice

func (f *Field) IsSlice() bool

IsSlice returns whether the field is a slice.

func (*Field) IsType

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 ConvertOption

	// 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).
	Error       bool                // Whether the function handles error object.
	NoCase      bool                // Whether the automatcher should compare field names case insensitively.
	PreProcess  string              // Ident to call before the field copy process.
	PostProcess string              // Ident to call after the field copy process.
}

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

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

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