github.com/jmigpin/editor@v1.6.0/util/iout/limitedwriter.go (about) 1 package iout 2 3 import ( 4 "bytes" 5 "fmt" 6 ) 7 8 type LimitedWriter struct { 9 avail int 10 buf bytes.Buffer 11 } 12 13 func NewLimitedWriter(size int) *LimitedWriter { 14 return &LimitedWriter{avail: size} 15 } 16 17 func (w *LimitedWriter) Write(p []byte) (n int, err error) { 18 if w.avail < len(p) { 19 p = p[:w.avail] 20 err = fmt.Errorf("limit reached") 21 } 22 n, err2 := w.buf.Write(p) 23 if err2 != nil { 24 return n, err2 25 } 26 w.avail -= n 27 return n, err 28 } 29 30 func (w *LimitedWriter) Bytes() []byte { 31 return w.buf.Bytes() 32 }