aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/golangci/dupl/printer
diff options
context:
space:
mode:
authorTaras Madan <tarasmadan@google.com>2025-01-22 16:07:17 +0100
committerTaras Madan <tarasmadan@google.com>2025-01-23 10:42:36 +0000
commit7b4377ad9d8a7205416df8d6217ef2b010f89481 (patch)
treee6fec4fd12ff807a16d847923f501075bf71d16c /vendor/github.com/golangci/dupl/printer
parent475a4c203afb8b7d3af51c4fd32bb170ff32a45e (diff)
vendor: delete
Diffstat (limited to 'vendor/github.com/golangci/dupl/printer')
-rw-r--r--vendor/github.com/golangci/dupl/printer/html.go120
-rw-r--r--vendor/github.com/golangci/dupl/printer/plumbing.go50
-rw-r--r--vendor/github.com/golangci/dupl/printer/printer.go11
-rw-r--r--vendor/github.com/golangci/dupl/printer/text.go100
4 files changed, 0 insertions, 281 deletions
diff --git a/vendor/github.com/golangci/dupl/printer/html.go b/vendor/github.com/golangci/dupl/printer/html.go
deleted file mode 100644
index 5ad9e25c7..000000000
--- a/vendor/github.com/golangci/dupl/printer/html.go
+++ /dev/null
@@ -1,120 +0,0 @@
-package printer
-
-import (
- "bytes"
- "fmt"
- "io"
- "regexp"
- "sort"
-
- "github.com/golangci/dupl/syntax"
-)
-
-type html struct {
- iota int
- w io.Writer
- ReadFile
-}
-
-func NewHTML(w io.Writer, fread ReadFile) Printer {
- return &html{w: w, ReadFile: fread}
-}
-
-func (p *html) PrintHeader() error {
- _, err := fmt.Fprint(p.w, `<!DOCTYPE html>
-<meta charset="utf-8"/>
-<title>Duplicates</title>
-<style>
- pre {
- background-color: #FFD;
- border: 1px solid #E2E2E2;
- padding: 1ex;
- }
-</style>
-`)
- return err
-}
-
-func (p *html) PrintClones(dups [][]*syntax.Node) error {
- p.iota++
- fmt.Fprintf(p.w, "<h1>#%d found %d clones</h1>\n", p.iota, len(dups))
-
- clones := make([]clone, len(dups))
- for i, dup := range dups {
- cnt := len(dup)
- if cnt == 0 {
- panic("zero length dup")
- }
- nstart := dup[0]
- nend := dup[cnt-1]
-
- file, err := p.ReadFile(nstart.Filename)
- if err != nil {
- return err
- }
-
- lineStart, _ := blockLines(file, nstart.Pos, nend.End)
- cl := clone{filename: nstart.Filename, lineStart: lineStart}
- start := findLineBeg(file, nstart.Pos)
- content := append(toWhitespace(file[start:nstart.Pos]), file[nstart.Pos:nend.End]...)
- cl.fragment = deindent(content)
- clones[i] = cl
- }
-
- sort.Sort(byNameAndLine(clones))
- for _, cl := range clones {
- fmt.Fprintf(p.w, "<h2>%s:%d</h2>\n<pre>%s</pre>\n", cl.filename, cl.lineStart, cl.fragment)
- }
- return nil
-}
-
-func (*html) PrintFooter() error { return nil }
-
-func findLineBeg(file []byte, index int) int {
- for i := index; i >= 0; i-- {
- if file[i] == '\n' {
- return i + 1
- }
- }
- return 0
-}
-
-func toWhitespace(str []byte) []byte {
- var out []byte
- for _, c := range bytes.Runes(str) {
- if c == '\t' {
- out = append(out, '\t')
- } else {
- out = append(out, ' ')
- }
- }
- return out
-}
-
-func deindent(block []byte) []byte {
- const maxVal = 99
- min := maxVal
- re := regexp.MustCompile(`(^|\n)(\t*)\S`)
- for _, line := range re.FindAllSubmatch(block, -1) {
- indent := line[2]
- if len(indent) < min {
- min = len(indent)
- }
- }
- if min == 0 || min == maxVal {
- return block
- }
- block = block[min:]
-Loop:
- for i := 0; i < len(block); i++ {
- if block[i] == '\n' && i != len(block)-1 {
- for j := 0; j < min; j++ {
- if block[i+j+1] != '\t' {
- continue Loop
- }
- }
- block = append(block[:i+1], block[i+1+min:]...)
- }
- }
- return block
-}
diff --git a/vendor/github.com/golangci/dupl/printer/plumbing.go b/vendor/github.com/golangci/dupl/printer/plumbing.go
deleted file mode 100644
index cf39d01b7..000000000
--- a/vendor/github.com/golangci/dupl/printer/plumbing.go
+++ /dev/null
@@ -1,50 +0,0 @@
-package printer
-
-import (
- "sort"
-
- "github.com/golangci/dupl/syntax"
-)
-
-type Clone clone
-
-func (c Clone) Filename() string {
- return c.filename
-}
-
-func (c Clone) LineStart() int {
- return c.lineStart
-}
-
-func (c Clone) LineEnd() int {
- return c.lineEnd
-}
-
-type Issue struct {
- From, To Clone
-}
-
-type Plumbing struct {
- ReadFile
-}
-
-func NewPlumbing(fread ReadFile) *Plumbing {
- return &Plumbing{fread}
-}
-
-func (p *Plumbing) MakeIssues(dups [][]*syntax.Node) ([]Issue, error) {
- clones, err := prepareClonesInfo(p.ReadFile, dups)
- if err != nil {
- return nil, err
- }
- sort.Sort(byNameAndLine(clones))
- var issues []Issue
- for i, cl := range clones {
- nextCl := clones[(i+1)%len(clones)]
- issues = append(issues, Issue{
- From: Clone(cl),
- To: Clone(nextCl),
- })
- }
- return issues, nil
-}
diff --git a/vendor/github.com/golangci/dupl/printer/printer.go b/vendor/github.com/golangci/dupl/printer/printer.go
deleted file mode 100644
index 385217bfc..000000000
--- a/vendor/github.com/golangci/dupl/printer/printer.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package printer
-
-import "github.com/golangci/dupl/syntax"
-
-type ReadFile func(filename string) ([]byte, error)
-
-type Printer interface {
- PrintHeader() error
- PrintClones(dups [][]*syntax.Node) error
- PrintFooter() error
-}
diff --git a/vendor/github.com/golangci/dupl/printer/text.go b/vendor/github.com/golangci/dupl/printer/text.go
deleted file mode 100644
index 8359fa76f..000000000
--- a/vendor/github.com/golangci/dupl/printer/text.go
+++ /dev/null
@@ -1,100 +0,0 @@
-package printer
-
-import (
- "fmt"
- "io"
- "sort"
-
- "github.com/golangci/dupl/syntax"
-)
-
-type text struct {
- cnt int
- w io.Writer
- ReadFile
-}
-
-func NewText(w io.Writer, fread ReadFile) Printer {
- return &text{w: w, ReadFile: fread}
-}
-
-func (p *text) PrintHeader() error { return nil }
-
-func (p *text) PrintClones(dups [][]*syntax.Node) error {
- p.cnt++
- fmt.Fprintf(p.w, "found %d clones:\n", len(dups))
- clones, err := prepareClonesInfo(p.ReadFile, dups)
- if err != nil {
- return err
- }
- sort.Sort(byNameAndLine(clones))
- for _, cl := range clones {
- fmt.Fprintf(p.w, " %s:%d,%d\n", cl.filename, cl.lineStart, cl.lineEnd)
- }
- return nil
-}
-
-func (p *text) PrintFooter() error {
- _, err := fmt.Fprintf(p.w, "\nFound total %d clone groups.\n", p.cnt)
- return err
-}
-
-func prepareClonesInfo(fread ReadFile, dups [][]*syntax.Node) ([]clone, error) {
- clones := make([]clone, len(dups))
- for i, dup := range dups {
- cnt := len(dup)
- if cnt == 0 {
- panic("zero length dup")
- }
- nstart := dup[0]
- nend := dup[cnt-1]
-
- file, err := fread(nstart.Filename)
- if err != nil {
- return nil, err
- }
-
- cl := clone{filename: nstart.Filename}
- cl.lineStart, cl.lineEnd = blockLines(file, nstart.Pos, nend.End)
- clones[i] = cl
- }
- return clones, nil
-}
-
-func blockLines(file []byte, from, to int) (int, int) {
- line := 1
- lineStart, lineEnd := 0, 0
- for offset, b := range file {
- if b == '\n' {
- line++
- }
- if offset == from {
- lineStart = line
- }
- if offset == to-1 {
- lineEnd = line
- break
- }
- }
- return lineStart, lineEnd
-}
-
-type clone struct {
- filename string
- lineStart int
- lineEnd int
- fragment []byte
-}
-
-type byNameAndLine []clone
-
-func (c byNameAndLine) Len() int { return len(c) }
-
-func (c byNameAndLine) Swap(i, j int) { c[i], c[j] = c[j], c[i] }
-
-func (c byNameAndLine) Less(i, j int) bool {
- if c[i].filename == c[j].filename {
- return c[i].lineStart < c[j].lineStart
- }
- return c[i].filename < c[j].filename
-}