github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/azure/arm/parser/armjson/reader.go (about) 1 package armjson 2 3 import ( 4 "bufio" 5 "io" 6 ) 7 8 type PeekReader struct { 9 underlying *bufio.Reader 10 } 11 12 func NewPeekReader(reader io.Reader) *PeekReader { 13 return &PeekReader{ 14 underlying: bufio.NewReader(reader), 15 } 16 } 17 18 func (r *PeekReader) Next() (rune, error) { 19 c, _, err := r.underlying.ReadRune() 20 return c, err 21 } 22 23 func (r *PeekReader) Undo() error { 24 return r.underlying.UnreadRune() 25 } 26 27 func (r *PeekReader) Peek() (rune, error) { 28 c, _, err := r.underlying.ReadRune() 29 if err != nil { 30 return 0, err 31 } 32 if err := r.underlying.UnreadRune(); err != nil { 33 return 0, err 34 } 35 return c, nil 36 }