github.com/Cloud-Foundations/Dominator@v0.3.4/lib/uncommenter/api.go (about) 1 package uncommenter 2 3 import ( 4 "io" 5 ) 6 7 const ( 8 CommentTypeHash = 1 << iota // "#" 9 CommentTypeSlashSlash // "//" 10 CommentTypeBang // "!" 11 12 CommentTypeAll = 0xffffffffffffffff 13 ) 14 15 type bufferedReader interface { 16 Read(p []byte) (int, error) 17 ReadByte() (byte, error) 18 } 19 20 type uncommenter struct { 21 commentTypes uint64 22 error error 23 reader bufferedReader 24 waitingForNewline bool 25 } 26 27 // New will return a wrapped reader, filtering out comment lines. 28 // Comment lines may begin with arbitrary whitespace followed by any of the 29 // specified commentTypes, until the next newline. 30 func New(reader io.Reader, commentTypes uint64) io.Reader { 31 return newUncommenter(reader, commentTypes) 32 } 33 34 func (u *uncommenter) Read(p []byte) (int, error) { 35 return u.read(p) 36 }