mdg

package
v0.12.2 Latest Latest
Warning

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

Go to latest
Published: Oct 11, 2023 License: AGPL-3.0 Imports: 11 Imported by: 1

Documentation

Overview

Package mdg is the Model Driven Generator Toolbox for [qb]MDD.

Index

Constants

View Source
const (
	Snake = "_"
	Kebab = "-"
)

For use with mdd.Name.Join

Variables

View Source
var GenIDTag genIDTag

GenIDTag is MMD's standard tag for attaching a unique ID to any mdd/mmb.Taggable model element.

Functions

func HasDerivedDiamond added in v0.9.1

func HasDerivedDiamond(c *mdd.Class) bool

func HasEntityBase added in v0.9.1

func HasEntityBase(c *mdd.Class) bool

func LessByName added in v0.11.2

func LessByName[T interface{ Name() mdd.Name }](s, t T) bool

func NameCmp added in v0.11.1

func NameCmp(l, r mdd.Name) int

func PtrID added in v0.4.0

func PtrID(p any) string

PtrID generates a unique string from an elements address in RAM.

func TemplateFuncs

func TemplateFuncs() map[string]any

Types

type AfterClass added in v0.5.0

type AfterClass func(*mdd.Class) error

func (AfterClass) BeginClass added in v0.5.0

func (v AfterClass) BeginClass(m *mdd.Class) error

func (AfterClass) EndClass added in v0.5.0

func (v AfterClass) EndClass(*mdd.Package) error

type AfterModel added in v0.5.0

type AfterModel func(*mdd.Model) error

func (AfterModel) BeginModel added in v0.5.0

func (v AfterModel) BeginModel(m *mdd.Model) error

func (AfterModel) EndModel added in v0.5.0

func (v AfterModel) EndModel(*mdd.Model) error

type AfterPackage added in v0.5.0

type AfterPackage func(*mdd.Package) error

func (AfterPackage) BeginPackage added in v0.5.0

func (v AfterPackage) BeginPackage(m *mdd.Package) error

func (AfterPackage) EndPackage added in v0.5.0

func (v AfterPackage) EndPackage(*mdd.Package) error

type AssocEndVisitor added in v0.9.1

type AssocEndVisitor interface {
	OnEnd(*mdd.AssocEnd, mdd.EndIndex) error
}

type AssociationVisitor added in v0.5.0

type AssociationVisitor interface {
	OnAssociation(*mdd.Association) error
}

type AttributeVisitor added in v0.5.0

type AttributeVisitor interface {
	OnAttribute(*mdd.Attribute) error
}

type BeforeClass added in v0.5.0

type BeforeClass func(*mdd.Class) error

func (BeforeClass) BeginClass added in v0.5.0

func (v BeforeClass) BeginClass(m *mdd.Class) error

func (BeforeClass) EndClass added in v0.5.0

func (v BeforeClass) EndClass(*mdd.Class) error

type BeforeModel added in v0.5.0

type BeforeModel func(*mdd.Model) error

func (BeforeModel) BeginModel added in v0.5.0

func (v BeforeModel) BeginModel(m *mdd.Model) error

func (BeforeModel) EndModel added in v0.5.0

func (v BeforeModel) EndModel(*mdd.Model) error

type BeforePackage added in v0.5.0

type BeforePackage func(*mdd.Package) error

func (BeforePackage) BeginPackage added in v0.5.0

func (v BeforePackage) BeginPackage(m *mdd.Package) error

func (BeforePackage) EndPackage added in v0.5.0

func (v BeforePackage) EndPackage(*mdd.Package) error

type ClassVisitor added in v0.5.0

type ClassVisitor interface {
	BeginClass(*mdd.Class) error
	EndClass(*mdd.Class) error
}

type DepthFirst added in v0.5.0

type DepthFirst TourGuide

func (*DepthFirst) Visit added in v0.5.0

func (g *DepthFirst) Visit(m *mdd.Model, visitor any) error

type DocTag added in v0.11.2

type DocTag string
const (
	DocText DocTag = "text"
	DocURI  DocTag = "URI"
)

func DocOf added in v0.11.5

func DocOf(t mdd.Taggable, firstMatch ...DocTag) (DocTag, any)

type GenDir

type GenDir struct {
	Dir    string
	Suffix string
}

func (GenDir) File

func (d GenDir) File(f string) string

type MergeConfig

type MergeConfig struct {
	// TempFile returns a temporary file name for a given file. If nil, a '~'
	// will be appended to create temporary file names.
	TempFile func(string) string

	// GenFile returns the name for the last generated version of a file. If
	// nil, "-gen" will be appended to the filename.
	GenFile func(string) string

	// If not nill PostProc will be called on the generated output right after
	// that file has bee closed. E.g. use this to call gofmt on generated
	// output.
	PostProc func(file string) error

	// If MkDirs is 0 MergeFile will not create any directories. Otherwise it
	// will use MkDirs as the file mode to create the directories.
	MkDirs fs.FileMode

	// Set the external 3-way-merge tool to do the actual merge. Default is
	// diff3.
	MergeTool string

	// Specify how the arguments are passed to MergeTool. Strings are passed
	// directly to MergeTool. MergeInput elemets map to the respective input
	// file name. Default is [-m, NewGenFile, OldGenFile, EditedFile].
	MergeArgs []any
}

type MergeInput added in v0.9.1

type MergeInput int

MergeInput is to be used in MergeConfig.MergeArgs.

const (
	OldGenFile MergeInput = iota
	NewGenFile
	EditedFile
)

func (MergeInput) Select added in v0.9.1

func (i MergeInput) Select(oldGen, newGen, edited string) string

type MergedFile

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

MergedFile implements a writer that used the diff3 tool to merge generated output with a manually modified version. To make this work, MergedFile also has to keep the last generated version of a file around. Alternatively you could use a separate "generator branch" in your VCS.

func NewMergedFile

func NewMergedFile(name string, cfg *MergeConfig) (*MergedFile, error)

func (*MergedFile) Close

func (f *MergedFile) Close() error

func (*MergedFile) MustClose added in v0.9.1

func (f *MergedFile) MustClose()

func (*MergedFile) Write

func (f *MergedFile) Write(b []byte) (int, error)

func (*MergedFile) Writes

func (f *MergedFile) Writes(s string) (int, error)

type ModelVisitor added in v0.5.0

type ModelVisitor interface {
	BeginModel(*mdd.Model) error
	EndModel(*mdd.Model) error
}

type NumIDTag added in v0.5.0

type NumIDTag int

NumIDTag generates unique IDs by incrementally counting tags. It implements the respective visitor interfaces so that you can attach IDs to any model with the TourGuide of your choice.

func (*NumIDTag) BeginPackage added in v0.5.0

func (t *NumIDTag) BeginPackage(p *mdd.Package) error

func (*NumIDTag) EndPackage added in v0.5.0

func (*NumIDTag) EndPackage(*mdd.Package) error

func (*NumIDTag) OnAssociation added in v0.5.0

func (t *NumIDTag) OnAssociation(a *mdd.Association) error

func (*NumIDTag) OnAttribute added in v0.5.0

func (t *NumIDTag) OnAttribute(a *mdd.Attribute) error

func (*NumIDTag) OnType added in v0.5.0

func (t *NumIDTag) OnType(u mdd.Type) error

func (NumIDTag) Tag added in v0.5.0

func (t NumIDTag) Tag(m *mdd.Model) error

type OnAssocEnd added in v0.9.1

type OnAssocEnd func(*mdd.AssocEnd, mdd.EndIndex) error

func (OnAssocEnd) OnEnd added in v0.9.1

func (v OnAssocEnd) OnEnd(a *mdd.AssocEnd, i mdd.EndIndex) error

type OnAssociation added in v0.5.0

type OnAssociation func(*mdd.Association) error

func (OnAssociation) OnAssociation added in v0.5.0

func (v OnAssociation) OnAssociation(a *mdd.Association) error

type OnAttribute added in v0.5.0

type OnAttribute func(*mdd.Attribute) error

func (OnAttribute) OnAttribute added in v0.5.0

func (v OnAttribute) OnAttribute(m *mdd.Attribute) error

type OnType added in v0.5.0

type OnType func(mdd.Type) error

func (OnType) OnType added in v0.5.0

func (v OnType) OnType(t mdd.Type) error

type PackageVisitor added in v0.5.0

type PackageVisitor interface {
	BeginPackage(*mdd.Package) error
	EndPackage(*mdd.Package) error
}

type PkgsByDeps added in v0.5.0

type PkgsByDeps map[*mdd.Package]int

func NewPkgsByDeps added in v0.5.0

func NewPkgsByDeps(m *mdd.Model) PkgsByDeps

func (PkgsByDeps) Less added in v0.5.0

func (pbd PkgsByDeps) Less(p, q *mdd.Package) bool

type TourGuide added in v0.5.0

type TourGuide struct {
	PackageLess func(p, q *mdd.Package) bool
	TypeLess    func(s, t mdd.Type) bool
}

type TypeVisitor added in v0.5.0

type TypeVisitor interface {
	OnType(mdd.Type) error
}

Jump to

Keyboard shortcuts

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