github.com/serversong/goreporter@v0.0.0-20200325104552-3cfaf44fd178/linters/copycheck/job/buildtree.go (about)

     1  package job
     2  
     3  import (
     4  	"github.com/360EntSecGroup-Skylar/goreporter/linters/copycheck/suffixtree"
     5  	"github.com/360EntSecGroup-Skylar/goreporter/linters/copycheck/syntax"
     6  )
     7  
     8  func BuildTree(schan chan []*syntax.Node) (t *suffixtree.STree, d *[]*syntax.Node, done chan bool) {
     9  	t = suffixtree.New()
    10  	data := make([]*syntax.Node, 0, 100)
    11  	done = make(chan bool)
    12  	go func() {
    13  		for seq := range schan {
    14  			data = append(data, seq...)
    15  			for _, node := range seq {
    16  				t.Update(node)
    17  			}
    18  		}
    19  		done <- true
    20  	}()
    21  	return t, &data, done
    22  }