gopkg.in/alecthomas/gometalinter.v3@v3.0.0/_linters/src/github.com/mibk/dupl/output/plumbing.go (about) 1 package output 2 3 import ( 4 "fmt" 5 "io" 6 "sort" 7 8 "github.com/mibk/dupl/syntax" 9 ) 10 11 type PlumbingPrinter struct { 12 *TextPrinter 13 } 14 15 func NewPlumbingPrinter(w io.Writer, fr FileReader) *PlumbingPrinter { 16 return &PlumbingPrinter{NewTextPrinter(w, fr)} 17 } 18 19 func (p *PlumbingPrinter) Print(dups [][]*syntax.Node) error { 20 clones, err := p.prepareClonesInfo(dups) 21 if err != nil { 22 return err 23 } 24 sort.Sort(byNameAndLine(clones)) 25 for i, cl := range clones { 26 nextCl := clones[(i+1)%len(clones)] 27 fmt.Fprintf(p.writer, "%s:%d-%d: duplicate of %s:%d-%d\n", cl.filename, cl.lineStart, cl.lineEnd, 28 nextCl.filename, nextCl.lineStart, nextCl.lineEnd) 29 } 30 return nil 31 } 32 33 func (p *PlumbingPrinter) Finish() {}