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 ExpandSubstitution(m, resolved *Map, placeholder *Field)
- 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 ExpandSubstitution ¶ added in v0.6.7
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