feat:make index works

上级 152d6913
package tequila
import (
"fmt"
"github.com/awalterschulze/gographviz"
"sort"
"strconv"
......@@ -14,6 +15,8 @@ type Relation struct {
}
type FullGraph struct {
layerIndex int
nodeIndex int
NodeList map[string]string
RelationList map[string]*Relation
}
......@@ -172,10 +175,10 @@ func (fullGraph *FullGraph) ToMapDot(node *GraphNode) *gographviz.Graph {
_ = graph.SetName("G")
nodes := make(map[string]string)
layerIndex := 1
nodeIndex := 1
fullGraph.layerIndex = 1
fullGraph.nodeIndex = 1
fullGraph.buildGraphNode(node, layerIndex, graph, nodeIndex, nodes)
fullGraph.buildGraphNode("G", node, graph, nodes)
for key := range fullGraph.RelationList {
relation := fullGraph.RelationList[key]
......@@ -193,20 +196,26 @@ func (fullGraph *FullGraph) ToMapDot(node *GraphNode) *gographviz.Graph {
return graph
}
func (fullGraph *FullGraph) buildGraphNode(node *GraphNode, layerIndex int, graph *gographviz.Graph, nodeIndex int, nodes map[string]string) {
layerAttr, layerName := buildLayerAttr(node.text, layerIndex)
_ = graph.AddSubGraph("G", layerName, layerAttr)
layerIndex++
for _, child := range node.children {
_ = graph.AddNode(layerName, "node"+strconv.Itoa(nodeIndex), fullGraph.buildRelationAttr(child.text))
nodes[node.text] = "node" + strconv.Itoa(nodeIndex)
nodeIndex++
func (fullGraph *FullGraph) buildGraphNode(subgraph string, current *GraphNode, graph *gographviz.Graph, nodes map[string]string) {
layerAttr, layerName := buildLayerAttr(current.text, fullGraph.layerIndex)
_ = graph.AddSubGraph(subgraph, layerName, layerAttr)
fullGraph.layerIndex++
if len(current.children) > 0 {
for _, child := range current.children {
fmt.Println(current.text)
fullGraph.buildGraphNode(layerName, child, graph, nodes)
}
} else {
fmt.Println(layerName, current.text, fullGraph.nodeIndex)
_ = graph.AddNode(layerName, "node"+strconv.Itoa(fullGraph.nodeIndex), fullGraph.buildRelationAttr(current.text))
nodes[current.text] = "node" + strconv.Itoa(fullGraph.nodeIndex)
fullGraph.nodeIndex++
}
}
func buildNode(arr []string, node *GraphNode) *GraphNode {
if node.text == arr[0] {
return node
}
......
package tequila
import (
"fmt"
. "github.com/onsi/gomega"
"github.com/phodal/coca/cmd/cmd_util"
"testing"
)
......@@ -48,7 +48,8 @@ func Test_BuildNodeDot(t *testing.T) {
node, graph := createBasicMap()
dot := graph.ToMapDot(node)
fmt.Println(dot.String())
result := dot.String()
cmd_util.WriteToCocaFile("demo.dot", result)
g.Expect(true).To(Equal(true))
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册