1 package meta 2 3 import ( 4 "io" 5 6 "vimagination.zapto.org/dos2unix" 7 ) 8 9 type clean struct { 10 r io.Reader 11 lastWasChar bool 12 } 13 14 func (c *clean) Read(p []byte) (int, error) { 15 n, err := c.r.Read(p) 16 p = p[:n] 17 for i := 0; i < len(p); i++ { 18 if p[i] == '\n' { 19 if c.lastWasChar { 20 c.lastWasChar = false 21 } else { 22 p = append(p[:i], p[i+1:]...) 23 i-- 24 } 25 } else { 26 c.lastWasChar = true 27 } 28 } 29 if err != nil { 30 return len(p), err 31 } 32 return len(p), nil 33 } 34 35 func cleaner(r io.Reader) io.Reader { 36 return &clean{ 37 r: dos2unix.DOS2Unix(r), 38 } 39 } 40