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  }