Documentation
¶
Overview ¶
Package d2ir implements a tree data structure to keep track of the resolved value of D2 keys.
Index ¶
- func BoardIDA(n Node) (ida []string)
- func IDA(n Node) (ida []string)
- func IsVar(n Node) bool
- func OverlayEdge(be, oe *Edge)
- func OverlayField(bf, of *Field)
- func OverlayMap(base, overlay *Map)
- func ParentShape(n Node) string
- func RelIDA(p, n Node) (ida []string)
- type Array
- func (a *Array) AST() d2ast.Node
- func (a *Array) Copy(newParent Node) Node
- func (a *Array) Equal(n2 Node) bool
- func (n *Array) LastPrimaryKey() *d2ast.Key
- func (n *Array) LastPrimaryRef() Reference
- func (n *Array) LastRef() Reference
- func (n *Array) Map() *Map
- func (n *Array) Parent() Node
- func (n *Array) Primary() *Scalar
- func (n *Array) String() string
- type BoardKind
- type CompileOptions
- type Composite
- type Edge
- func (e *Edge) AST() d2ast.Node
- func (e *Edge) Copy(newParent Node) Node
- func (e *Edge) Equal(n2 Node) bool
- func (e *Edge) IDString() string
- func (e *Edge) LastPrimaryKey() *d2ast.Key
- func (e *Edge) LastPrimaryRef() Reference
- func (e *Edge) LastRef() Reference
- func (n *Edge) Map() *Map
- func (n *Edge) Parent() Node
- func (n *Edge) Primary() *Scalar
- func (n *Edge) String() string
- type EdgeID
- type EdgeReference
- type Field
- func (f *Field) AST() d2ast.Node
- func (f *Field) Copy(newParent Node) Node
- func (f *Field) Equal(n2 Node) bool
- func (f *Field) LastPrimaryKey() *d2ast.Key
- func (f *Field) LastPrimaryRef() Reference
- func (f *Field) LastRef() Reference
- func (n *Field) Map() *Map
- func (n *Field) Parent() Node
- func (n *Field) Primary() *Scalar
- func (f *Field) Root() bool
- func (n *Field) String() string
- type FieldReference
- func (fr *FieldReference) AST() d2ast.Node
- func (r *FieldReference) Context() *RefContext
- func (r *FieldReference) DueToGlob() bool
- func (r *FieldReference) DueToLazyGlob() bool
- func (fr *FieldReference) EdgeDest() bool
- func (fr *FieldReference) InEdge() bool
- func (fr *FieldReference) KeyPathIndex() int
- func (fr *FieldReference) Primary() bool
- type Map
- func (m *Map) AST() d2ast.Node
- func (m *Map) Copy(newParent Node) Node
- func (m *Map) CopyBase(newParent Node) *Map
- func (m *Map) CreateEdge(eid *EdgeID, refctx *RefContext, c *compiler) ([]*Edge, error)
- func (m *Map) DeleteEdge(eid *EdgeID) *Edge
- func (m *Map) DeleteField(ida ...string) *Field
- func (m *Map) EdgeCountRecursive() int
- func (m *Map) EnsureField(kp *d2ast.KeyPath, refctx *RefContext, create bool, c *compiler) ([]*Field, error)
- func (m *Map) Equal(n2 Node) bool
- func (m *Map) FieldCountRecursive() int
- func (m *Map) GetClassMap(name string) *Map
- func (m *Map) GetEdges(eid *EdgeID, refctx *RefContext, c *compiler) []*Edge
- func (m *Map) GetField(ida ...string) *Field
- func (m *Map) InClass(key *d2ast.Key) bool
- func (m *Map) IsClass() bool
- func (m *Map) IsContainer() bool
- func (n *Map) LastPrimaryKey() *d2ast.Key
- func (n *Map) LastPrimaryRef() Reference
- func (n *Map) LastRef() Reference
- func (n *Map) Map() *Map
- func (n *Map) Parent() Node
- func (n *Map) Primary() *Scalar
- func (m *Map) Query(idStr string) (Node, error)
- func (m *Map) QueryAll(idStr string) (na []Node, _ error)
- func (m *Map) Root() bool
- func (n *Map) String() string
- type Node
- type RefContext
- type Reference
- type Scalar
- func (s *Scalar) AST() d2ast.Node
- func (s *Scalar) Copy(newParent Node) Node
- func (s *Scalar) Equal(n2 Node) bool
- func (n *Scalar) LastPrimaryKey() *d2ast.Key
- func (n *Scalar) LastPrimaryRef() Reference
- func (n *Scalar) LastRef() Reference
- func (n *Scalar) Map() *Map
- func (n *Scalar) Parent() Node
- func (n *Scalar) Primary() *Scalar
- func (n *Scalar) String() string
- type Value
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BoardIDA ¶ added in v0.2.4
BoardIDA returns the absolute path to n from the nearest board root.
func OverlayEdge ¶
func OverlayEdge(be, oe *Edge)
func OverlayField ¶
func OverlayField(bf, of *Field)
func OverlayMap ¶
func OverlayMap(base, overlay *Map)
func ParentShape ¶ added in v0.6.1
Types ¶
type Array ¶
type Array struct {
Values []Value `json:"values"`
// contains filtered or unexported fields
}
func (*Array) LastPrimaryKey ¶
func (*Array) LastPrimaryRef ¶ added in v0.6.1
type BoardKind ¶
type BoardKind string
func NodeBoardKind ¶
NodeBoardKind reports whether n represents the root of a board. n should be *Field or *Map
type CompileOptions ¶ added in v0.5.0
type Edge ¶
type Edge struct {
ID *EdgeID `json:"edge_id"`
Primary_ *Scalar `json:"primary,omitempty"`
Map_ *Map `json:"map,omitempty"`
References []*EdgeReference `json:"references,omitempty"`
// contains filtered or unexported fields
}
func ParentEdge ¶
func (*Edge) LastPrimaryKey ¶
func (*Edge) LastPrimaryRef ¶ added in v0.6.1
type EdgeID ¶
type EdgeID struct {
SrcPath []string `json:"src_path"`
SrcArrow bool `json:"src_arrow"`
DstPath []string `json:"dst_path"`
DstArrow bool `json:"dst_arrow"`
// If nil, then any EdgeID with equal src/dst/arrows matches.
Index *int `json:"index"`
Glob bool `json:"glob"`
}
func NewEdgeIDs ¶
type EdgeReference ¶
type EdgeReference struct {
Context_ *RefContext `json:"context"`
DueToGlob_ bool `json:"due_to_glob"`
DueToLazyGlob_ bool `json:"due_to_lazy_glob"`
}
func (*EdgeReference) AST ¶
func (er *EdgeReference) AST() d2ast.Node
func (*EdgeReference) Context ¶
func (r *EdgeReference) Context() *RefContext
func (*EdgeReference) DueToGlob ¶ added in v0.6.1
func (r *EdgeReference) DueToGlob() bool
func (*EdgeReference) DueToLazyGlob ¶ added in v0.6.1
func (r *EdgeReference) DueToLazyGlob() bool
func (*EdgeReference) Primary ¶
func (er *EdgeReference) Primary() bool
Primary returns true if the Value in Context.Key.Value corresponds to the *Edge represented by Context.Edge
type Field ¶
type Field struct {
Name string `json:"name"`
// Primary_ to avoid clashing with Primary(). We need to keep it exported for
// encoding/json to marshal it so cannot prefix _ instead.
Primary_ *Scalar `json:"primary,omitempty"`
Composite Composite `json:"composite,omitempty"`
References []*FieldReference `json:"references,omitempty"`
// contains filtered or unexported fields
}
func ParentField ¶
func (*Field) LastPrimaryKey ¶
func (*Field) LastPrimaryRef ¶ added in v0.6.1
type FieldReference ¶
type FieldReference struct {
String d2ast.String `json:"string"`
KeyPath *d2ast.KeyPath `json:"key_path"`
Context_ *RefContext `json:"context"`
DueToGlob_ bool `json:"due_to_glob"`
DueToLazyGlob_ bool `json:"due_to_lazy_glob"`
}
func (*FieldReference) AST ¶
func (fr *FieldReference) AST() d2ast.Node
func (*FieldReference) Context ¶
func (r *FieldReference) Context() *RefContext
func (*FieldReference) DueToGlob ¶ added in v0.6.1
func (r *FieldReference) DueToGlob() bool
func (*FieldReference) DueToLazyGlob ¶ added in v0.6.1
func (r *FieldReference) DueToLazyGlob() bool
func (*FieldReference) EdgeDest ¶
func (fr *FieldReference) EdgeDest() bool
func (*FieldReference) InEdge ¶
func (fr *FieldReference) InEdge() bool
func (*FieldReference) KeyPathIndex ¶
func (fr *FieldReference) KeyPathIndex() int
func (*FieldReference) Primary ¶
func (fr *FieldReference) Primary() bool
Primary returns true if the Value in Context.Key.Value corresponds to the Field represented by String.
type Map ¶
type Map struct {
Fields []*Field `json:"fields"`
Edges []*Edge `json:"edges"`
// contains filtered or unexported fields
}
func (*Map) CreateEdge ¶
func (m *Map) CreateEdge(eid *EdgeID, refctx *RefContext, c *compiler) ([]*Edge, error)
func (*Map) DeleteEdge ¶ added in v0.6.0
func (*Map) DeleteField ¶
func (*Map) EdgeCountRecursive ¶
func (*Map) EnsureField ¶
func (m *Map) EnsureField(kp *d2ast.KeyPath, refctx *RefContext, create bool, c *compiler) ([]*Field, error)
EnsureField is a bit of a misnomer. It's more of a Query/Ensure combination function at this point.
func (*Map) FieldCountRecursive ¶
func (*Map) GetClassMap ¶ added in v0.4.0
func (*Map) IsContainer ¶ added in v0.6.0
func (*Map) LastPrimaryKey ¶
func (*Map) LastPrimaryRef ¶ added in v0.6.1
type Node ¶
type Node interface {
Copy(newParent Node) Node
Parent() Node
Primary() *Scalar
Map() *Map
Equal(n2 Node) bool
AST() d2ast.Node
fmt.Stringer
LastRef() Reference
LastPrimaryRef() Reference
LastPrimaryKey() *d2ast.Key
// contains filtered or unexported methods
}
Most errors returned by a node should be created with d2parser.Errorf to indicate the offending AST node.
func ParentBoard ¶
type RefContext ¶
type RefContext struct {
Edge *d2ast.Edge `json:"edge"`
Key *d2ast.Key `json:"key"`
Scope *d2ast.Map `json:"-"`
ScopeMap *Map `json:"-"`
ScopeAST *d2ast.Map `json:"-"`
}
func (*RefContext) Copy ¶
func (rc *RefContext) Copy() *RefContext
func (*RefContext) EdgeIndex ¶
func (rc *RefContext) EdgeIndex() int
func (*RefContext) Equal ¶ added in v0.6.1
func (rc *RefContext) Equal(rc2 *RefContext) bool