package d2ir

Import Path
	oss.terrastruct.com/d2/d2ir (on go.dev)

Dependency Relation
	imports 18 packages, and imported by one package

Involved Source Files compile.go Package d2ir implements a tree data structure to keep track of the resolved value of D2 keys. import.go merge.go pattern.go query.go
Package-Level Type Names (total 16)
/* sort by: | */
Values []Value (*Array) AST() d2ast.Node (*Array) Copy(newParent Node) Node (*Array) Equal(n2 Node) bool (*Array) LastPrimaryKey() *d2ast.Key (*Array) LastPrimaryRef() Reference (*Array) LastRef() Reference (*Array) Map() *Map (*Array) Parent() Node (*Array) Primary() *Scalar (*Array) String() string *Array : Composite *Array : Node *Array : Value *Array : expvar.Var *Array : fmt.Stringer
func NodeBoardKind(n Node) BoardKind const BoardLayer const BoardScenario const BoardStep
Pass nil to disable imports. UTF16Pos bool func Compile(ast *d2ast.Map, opts *CompileOptions) (*Map, []string, error)
( Composite) AST() d2ast.Node ( Composite) Copy(newParent Node) Node ( Composite) Equal(n2 Node) bool ( Composite) LastPrimaryKey() *d2ast.Key ( Composite) LastPrimaryRef() Reference ( Composite) LastRef() Reference ( Composite) Map() *Map ( Composite) Parent() Node ( Composite) Primary() *Scalar ( Composite) String() string *Array *Map Composite : Node Composite : Value Composite : expvar.Var Composite : fmt.Stringer
ID *EdgeID Map_ *Map Primary_ *Scalar References []*EdgeReference (*Edge) AST() d2ast.Node (*Edge) Copy(newParent Node) Node (*Edge) Equal(n2 Node) bool (*Edge) IDString() d2ast.String (*Edge) ImportAST() d2ast.Node (*Edge) LastPrimaryKey() *d2ast.Key (*Edge) LastPrimaryRef() Reference (*Edge) LastRef() Reference (*Edge) Map() *Map (*Edge) Parent() Node (*Edge) Primary() *Scalar (*Edge) SetImportAST(node d2ast.Node) (*Edge) String() string *Edge : Importable *Edge : Node *Edge : expvar.Var *Edge : fmt.Stringer func ParentEdge(n Node) *Edge func (*Map).CreateEdge(eid *EdgeID, refctx *RefContext, c *compiler) ([]*Edge, error) func (*Map).DeleteEdge(eid *EdgeID) *Edge func (*Map).GetEdges(eid *EdgeID, refctx *RefContext, c *compiler) []*Edge func OverlayEdge(be, oe *Edge)
DstArrow bool DstPath []d2ast.String Glob bool If nil, then any EdgeID with equal src/dst/arrows matches. SrcArrow bool SrcPath []d2ast.String (*EdgeID) Copy() *EdgeID (*EdgeID) Match(eid2 *EdgeID) bool func NewEdgeIDs(k *d2ast.Key) (eida []*EdgeID) func (*EdgeID).Copy() *EdgeID func (*EdgeID).Match(eid2 *EdgeID) bool func (*Map).CreateEdge(eid *EdgeID, refctx *RefContext, c *compiler) ([]*Edge, error) func (*Map).DeleteEdge(eid *EdgeID) *Edge func (*Map).GetEdges(eid *EdgeID, refctx *RefContext, c *compiler) []*Edge
Context_ *RefContext DueToGlob_ bool DueToLazyGlob_ bool (*EdgeReference) AST() d2ast.Node (*EdgeReference) Context() *RefContext (*EdgeReference) DueToGlob() bool (*EdgeReference) DueToLazyGlob() bool Primary returns true if the Value in Context.Key.Value corresponds to the *Edge represented by Context.Edge *EdgeReference : Reference
Composite Composite Name d2ast.String Primary_ to avoid clashing with Primary(). We need to keep it exported for encoding/json to marshal it so cannot prefix _ instead. References []*FieldReference (*Field) AST() d2ast.Node (*Field) Copy(newParent Node) Node (*Field) Equal(n2 Node) bool (*Field) ImportAST() d2ast.Node (*Field) LastPrimaryKey() *d2ast.Key (*Field) LastPrimaryRef() Reference (*Field) LastRef() Reference (*Field) Map() *Map (*Field) Parent() Node (*Field) Primary() *Scalar (*Field) Root() bool (*Field) SetImportAST(node d2ast.Node) (*Field) String() string *Field : Importable *Field : Node *Field : expvar.Var *Field : fmt.Stringer func ParentField(n Node) *Field func (*Map).DeleteField(ida ...string) *Field func (*Map).EnsureField(kp *d2ast.KeyPath, refctx *RefContext, create bool, c *compiler) ([]*Field, error) func (*Map).GetField(ida ...d2ast.String) *Field func ExpandSubstitution(m, resolved *Map, placeholder *Field) func OverlayField(bf, of *Field)
Context_ *RefContext DueToGlob_ bool DueToLazyGlob_ bool KeyPath *d2ast.KeyPath String d2ast.String (*FieldReference) AST() d2ast.Node (*FieldReference) Context() *RefContext (*FieldReference) DueToGlob() bool (*FieldReference) DueToLazyGlob() bool (*FieldReference) EdgeDest() bool (*FieldReference) InEdge() bool (*FieldReference) KeyPathIndex() int Primary returns true if the Value in Context.Key.Value corresponds to the Field represented by String. *FieldReference : Reference
( Importable) ImportAST() d2ast.Node ( Importable) SetImportAST(d2ast.Node) *Edge *Field *Map
Edges []*Edge Fields []*Field (*Map) AST() d2ast.Node (*Map) Copy(newParent Node) Node CopyBase copies the map m without layers/scenarios/steps. (*Map) CreateEdge(eid *EdgeID, refctx *RefContext, c *compiler) ([]*Edge, error) (*Map) DeleteEdge(eid *EdgeID) *Edge (*Map) DeleteField(ida ...string) *Field (*Map) EdgeCountRecursive() int EnsureField is a bit of a misnomer. It's more of a Query/Ensure combination function at this point. (*Map) Equal(n2 Node) bool (*Map) FieldCountRecursive() int (*Map) FindBoardRoot(path []string) *Map (*Map) GetClassMap(name string) *Map (*Map) GetEdges(eid *EdgeID, refctx *RefContext, c *compiler) []*Edge (*Map) GetField(ida ...d2ast.String) *Field (*Map) ImportAST() d2ast.Node (*Map) InClass(key *d2ast.Key) bool (*Map) IsClass() bool (*Map) IsContainer() bool (*Map) LastPrimaryKey() *d2ast.Key (*Map) LastPrimaryRef() Reference (*Map) LastRef() Reference (*Map) Map() *Map (*Map) Parent() Node (*Map) Primary() *Scalar Query is only for tests and debugging. QueryAll is only for tests and debugging. Root reports whether the Map is the root of the D2 tree. (*Map) SetImportAST(node d2ast.Node) (*Map) String() string *Map : Composite *Map : Importable *Map : Node *Map : Value *Map : expvar.Var *Map : fmt.Stringer func Compile(ast *d2ast.Map, opts *CompileOptions) (*Map, []string, error) func ParentMap(n Node) *Map func RootMap(m *Map) *Map func (*Array).Map() *Map func Composite.Map() *Map func (*Edge).Map() *Map func (*Field).Map() *Map func (*Map).CopyBase(newParent Node) *Map func (*Map).FindBoardRoot(path []string) *Map func (*Map).GetClassMap(name string) *Map func (*Map).Map() *Map func Node.Map() *Map func (*Scalar).Map() *Map func Value.Map() *Map func ExpandSubstitution(m, resolved *Map, placeholder *Field) func OverlayMap(base, overlay *Map) func RootMap(m *Map) *Map
Most errors returned by a node should be created with d2parser.Errorf to indicate the offending AST node. ( Node) AST() d2ast.Node ( Node) Copy(newParent Node) Node ( Node) Equal(n2 Node) bool ( Node) LastPrimaryKey() *d2ast.Key ( Node) LastPrimaryRef() Reference ( Node) LastRef() Reference ( Node) Map() *Map ( Node) Parent() Node ( Node) Primary() *Scalar ( Node) String() string *Array Composite (interface) *Edge *Field *Map *Scalar Value (interface) Node : expvar.Var Node : fmt.Stringer func ParentBoard(n Node) Node func (*Array).Copy(newParent Node) Node func (*Array).Parent() Node func Composite.Copy(newParent Node) Node func Composite.Parent() Node func (*Edge).Copy(newParent Node) Node func (*Edge).Parent() Node func (*Field).Copy(newParent Node) Node func (*Field).Parent() Node func (*Map).Copy(newParent Node) Node func (*Map).Parent() Node func (*Map).Query(idStr string) (Node, error) func (*Map).QueryAll(idStr string) (na []Node, _ error) func Node.Copy(newParent Node) Node func Node.Parent() Node func (*Scalar).Copy(newParent Node) Node func (*Scalar).Parent() Node func Value.Copy(newParent Node) Node func Value.Parent() Node func BoardIDA(n Node) (ida []d2ast.String) func IDA(n Node) (ida []d2ast.String) func IsVar(n Node) bool func NodeBoardKind(n Node) BoardKind func ParentBoard(n Node) Node func ParentEdge(n Node) *Edge func ParentField(n Node) *Field func ParentMap(n Node) *Map func ParentShape(n Node) string func RelIDA(p, n Node) (ida []d2ast.String) func (*Array).Copy(newParent Node) Node func (*Array).Equal(n2 Node) bool func Composite.Copy(newParent Node) Node func Composite.Equal(n2 Node) bool func (*Edge).Copy(newParent Node) Node func (*Edge).Equal(n2 Node) bool func (*Field).Copy(newParent Node) Node func (*Field).Equal(n2 Node) bool func (*Map).Copy(newParent Node) Node func (*Map).CopyBase(newParent Node) *Map func (*Map).Equal(n2 Node) bool func Node.Copy(newParent Node) Node func Node.Equal(n2 Node) bool func (*Scalar).Copy(newParent Node) Node func (*Scalar).Equal(n2 Node) bool func Value.Copy(newParent Node) Node func Value.Equal(n2 Node) bool
Edge *d2ast.Edge Key *d2ast.Key Scope *d2ast.Map ScopeAST *d2ast.Map ScopeMap *Map (*RefContext) Copy() *RefContext (*RefContext) EdgeIndex() int (*RefContext) Equal(rc2 *RefContext) bool func (*EdgeReference).Context() *RefContext func (*FieldReference).Context() *RefContext func (*RefContext).Copy() *RefContext func Reference.Context() *RefContext func (*Map).CreateEdge(eid *EdgeID, refctx *RefContext, c *compiler) ([]*Edge, error) func (*Map).EnsureField(kp *d2ast.KeyPath, refctx *RefContext, create bool, c *compiler) ([]*Field, error) func (*Map).GetEdges(eid *EdgeID, refctx *RefContext, c *compiler) []*Edge func (*RefContext).Equal(rc2 *RefContext) bool
Most specific AST node for the reference. ( Reference) Context() *RefContext Result of a glob in Context or from above. ( Reference) DueToLazyGlob() bool ( Reference) Primary() bool *EdgeReference *FieldReference func (*Array).LastPrimaryRef() Reference func (*Array).LastRef() Reference func Composite.LastPrimaryRef() Reference func Composite.LastRef() Reference func (*Edge).LastPrimaryRef() Reference func (*Edge).LastRef() Reference func (*Field).LastPrimaryRef() Reference func (*Field).LastRef() Reference func (*Map).LastPrimaryRef() Reference func (*Map).LastRef() Reference func Node.LastPrimaryRef() Reference func Node.LastRef() Reference func (*Scalar).LastPrimaryRef() Reference func (*Scalar).LastRef() Reference func Value.LastPrimaryRef() Reference func Value.LastRef() Reference
Value d2ast.Scalar (*Scalar) AST() d2ast.Node (*Scalar) Copy(newParent Node) Node (*Scalar) Equal(n2 Node) bool (*Scalar) LastPrimaryKey() *d2ast.Key (*Scalar) LastPrimaryRef() Reference (*Scalar) LastRef() Reference (*Scalar) Map() *Map (*Scalar) Parent() Node (*Scalar) Primary() *Scalar (*Scalar) String() string *Scalar : Node *Scalar : Value *Scalar : expvar.Var *Scalar : fmt.Stringer func (*Array).Primary() *Scalar func Composite.Primary() *Scalar func (*Edge).Primary() *Scalar func (*Field).Primary() *Scalar func (*Map).Primary() *Scalar func Node.Primary() *Scalar func (*Scalar).Primary() *Scalar func Value.Primary() *Scalar
( Value) AST() d2ast.Node ( Value) Copy(newParent Node) Node ( Value) Equal(n2 Node) bool ( Value) LastPrimaryKey() *d2ast.Key ( Value) LastPrimaryRef() Reference ( Value) LastRef() Reference ( Value) Map() *Map ( Value) Parent() Node ( Value) Primary() *Scalar ( Value) String() string *Array Composite (interface) *Map *Scalar Value : Node Value : expvar.Var Value : fmt.Stringer
Package-Level Functions (total 17)
BoardIDA returns the absolute path to n from the nearest board root.
func Compile(ast *d2ast.Map, opts *CompileOptions) (*Map, []string, error)
func ExpandSubstitution(m, resolved *Map, placeholder *Field)
IDA returns the absolute path to n.
func IsVar(n Node) bool
func NewEdgeIDs(k *d2ast.Key) (eida []*EdgeID)
NodeBoardKind reports whether n represents the root of a board. n should be *Field or *Map
func OverlayEdge(be, oe *Edge)
func OverlayField(bf, of *Field)
func OverlayMap(base, overlay *Map)
func ParentEdge(n Node) *Edge
func ParentMap(n Node) *Map
RelIDA returns the path to n relative to p.
func RootMap(m *Map) *Map
Package-Level Constants (total 3)
const BoardLayer BoardKind = "layer"
const BoardScenario BoardKind = "scenario"
const BoardStep BoardKind = "step"