gopkg.in/alecthomas/gometalinter.v3@v3.0.0/_linters/src/github.com/mibk/dupl/job/parse.go (about) 1 package job 2 3 import ( 4 "log" 5 6 "github.com/mibk/dupl/syntax" 7 "github.com/mibk/dupl/syntax/golang" 8 ) 9 10 func Parse(fchan chan string) chan []*syntax.Node { 11 12 // parse AST 13 achan := make(chan *syntax.Node) 14 go func() { 15 for file := range fchan { 16 ast, err := golang.Parse(file) 17 if err != nil { 18 log.Println(err) 19 continue 20 } 21 achan <- ast 22 } 23 close(achan) 24 }() 25 26 // serialize 27 schan := make(chan []*syntax.Node) 28 go func() { 29 for ast := range achan { 30 seq := syntax.Serialize(ast) 31 schan <- seq 32 } 33 close(schan) 34 }() 35 return schan 36 }