34 lines
640 B
Go
34 lines
640 B
Go
package depgraph
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/terraform/digraph"
|
|
)
|
|
|
|
// Nouns are the key structure of the dependency graph. They can
|
|
// be used to represent all objects in the graph. They are linked
|
|
// by depedencies.
|
|
type Noun struct {
|
|
Name string // Opaque name
|
|
Meta interface{}
|
|
Deps []*Dependency
|
|
}
|
|
|
|
// Edges returns the out-going edges of a Noun
|
|
func (n *Noun) Edges() []digraph.Edge {
|
|
edges := make([]digraph.Edge, len(n.Deps))
|
|
for idx, dep := range n.Deps {
|
|
edges[idx] = dep
|
|
}
|
|
return edges
|
|
}
|
|
|
|
func (n *Noun) GoString() string {
|
|
return fmt.Sprintf("*%#v", *n)
|
|
}
|
|
|
|
func (n *Noun) String() string {
|
|
return n.Name
|
|
}
|