mirror of
https://github.com/mudler/luet.git
synced 2025-09-20 02:31:41 +00:00
🎨 Cleanups
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package toposort
|
||||
|
||||
import "sort"
|
||||
|
||||
type Graph struct {
|
||||
nodes []string
|
||||
outputs map[string]map[string]int
|
||||
@@ -59,7 +61,7 @@ func (g *Graph) RemoveEdge(from, to string) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (g *Graph) Toposort() ([]string, bool) {
|
||||
func (g *Graph) toposort(stable bool) ([]string, bool) {
|
||||
L := make([]string, 0, len(g.nodes))
|
||||
S := make([]string, 0, len(g.nodes))
|
||||
|
||||
@@ -69,6 +71,10 @@ func (g *Graph) Toposort() ([]string, bool) {
|
||||
}
|
||||
}
|
||||
|
||||
if stable {
|
||||
sort.Strings(S)
|
||||
}
|
||||
|
||||
for len(S) > 0 {
|
||||
var n string
|
||||
n, S = S[0], S[1:]
|
||||
@@ -79,6 +85,10 @@ func (g *Graph) Toposort() ([]string, bool) {
|
||||
ms[i-1] = m
|
||||
}
|
||||
|
||||
if stable {
|
||||
sort.Strings(ms)
|
||||
}
|
||||
|
||||
for _, m := range ms {
|
||||
g.unsafeRemoveEdge(n, m)
|
||||
|
||||
@@ -99,3 +109,11 @@ func (g *Graph) Toposort() ([]string, bool) {
|
||||
|
||||
return L, true
|
||||
}
|
||||
|
||||
func (g *Graph) Toposort() ([]string, bool) {
|
||||
return g.toposort(false)
|
||||
}
|
||||
|
||||
func (g *Graph) ToposortStable() ([]string, bool) {
|
||||
return g.toposort(true)
|
||||
}
|
Reference in New Issue
Block a user