github.com/lingyao2333/mo-zero@v1.4.1/core/filex/progressscanner.go (about)

     1  package filex
     2  
     3  import "gopkg.in/cheggaaa/pb.v1"
     4  
     5  type (
     6  	// A Scanner is used to read lines.
     7  	Scanner interface {
     8  		// Scan checks if has remaining to read.
     9  		Scan() bool
    10  		// Text returns next line.
    11  		Text() string
    12  	}
    13  
    14  	progressScanner struct {
    15  		Scanner
    16  		bar *pb.ProgressBar
    17  	}
    18  )
    19  
    20  // NewProgressScanner returns a Scanner with progress indicator.
    21  func NewProgressScanner(scanner Scanner, bar *pb.ProgressBar) Scanner {
    22  	return &progressScanner{
    23  		Scanner: scanner,
    24  		bar:     bar,
    25  	}
    26  }
    27  
    28  func (ps *progressScanner) Text() string {
    29  	s := ps.Scanner.Text()
    30  	ps.bar.Add64(int64(len(s)) + 1) // take newlines into account
    31  	return s
    32  }