Documentation
¶
Overview ¶
Package filegraph implements a directed weighted graph of files, where the weight of edge (x, y), called distance, represents how much y is affected by changes in x. Such graph provides distance between any two files, and can order files by distance from/to a given file.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EdgeReader ¶
type EdgeReader interface { // ReadEdges calls the callback for each edge of the given node. // If callback returns false, then iteration stops. // // May report multiple edges to the same node. // In context of Query, only the shortest one will influence the outcome. // // Idempotent: calling many times with the same `from` reports the same `to` // Node objects. ReadEdges(from Node, callback func(to Node, distance float64) (keepGoing bool)) }
EdgeReader reads edges of a node.
type Node ¶
type Node interface { // Name returns node's name. // It is an forward-slash-separated path with "//" prefix, // e.g. "//foo/bar.cc". Name() string }
Node is a node in a directed weighted graph of files. It is either a file or a directory.
The weight of edge (x, y), called distance, represents how much y is affected by changes in x. It is a value between 0 and +inf, where 0 means extremely affected and +inf means not affected at all.
type Query ¶
type Query struct { // Sources are the nodes to start from. Sources []Node // EdgeReader is used to read adjacent nodes and distances. EdgeReader EdgeReader // MaxDistance, if positive, is the distance threshold. // Nodes further than this are considered unreachable. MaxDistance float64 // contains filtered or unexported fields }
Query finds shortest paths from any of Query.Sources to other nodes, producing a shortest-path tree (https://en.wikipedia.org/wiki/Shortest-path_tree).
It is based on Dijkstra's algorithm (https://en.wikipedia.org/wiki/Dijkstra's_algorithm).
func (*Query) Run ¶
func (q *Query) Run(callback func(*ShortestPath) (keepGoing bool))
Run calls the callback for each node reachable from any of the sources. The nodes are reported in the distance-ascending order relative to the sources, starting from the sources themselves.
If the callback returns false, then the iteration stops.
func (*Query) ShortestPath ¶
func (q *Query) ShortestPath(to Node) *ShortestPath
ShortestPath returns the shortest path to a node. Returns nil if the path does not exist. ShortestPath.Path() can be used to reconstruct the full path.
type ShortestPath ¶
type ShortestPath struct { Node Node Distance float64 // Prev points to the previous node on the path from a source to this node. // It can be used to reconstruct the whole shortest path, starting from a // source. Prev *ShortestPath }
ShortestPath represents the shortest path from one of sources to a node. ShortestPath itself is a node in a shortest path tree (https://en.wikipedia.org/wiki/Shortest-path_tree).
func (*ShortestPath) Path ¶
func (r *ShortestPath) Path() []*ShortestPath
Path reconstructs the path from a query source to r.Node.
Directories
¶
Path | Synopsis |
---|---|
Package cli implements filegraph command.
|
Package cli implements filegraph command. |
Package git implements derivation of a file graph from git log and optionally from the file structure.
|
Package git implements derivation of a file graph from git log and optionally from the file structure. |