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() {}