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 }