// Write one edge func (rw *RefWriter) WriteEdge(from, to key.Key, linkname string) error { if rw.Ctx != nil { select { case <-rw.Ctx.Done(): // just in case. return rw.Ctx.Err() default: } } var s string switch { case rw.PrintFmt != "": s = rw.PrintFmt s = strings.Replace(s, "<src>", from.Pretty(), -1) s = strings.Replace(s, "<dst>", to.Pretty(), -1) s = strings.Replace(s, "<linkname>", linkname, -1) case rw.PrintEdge: s = from.Pretty() + " -> " + to.Pretty() default: s += to.Pretty() } rw.out <- &RefWrapper{Ref: s} return nil }