diff options
Diffstat (limited to 'decode.go')
-rw-r--r-- | decode.go | 20 |
1 files changed, 7 insertions, 13 deletions
@@ -27,8 +27,7 @@ type runeBuffer interface { } type Decoder struct { - io runeTypeScanner - buf *bufio.Reader + io runeTypeScanner // config disallowUnknownFields bool @@ -39,23 +38,18 @@ type Decoder struct { stack []any } -var forceBufio bool // used by the tests to implement .Buffered() - func NewDecoder(r io.Reader) *Decoder { rr, ok := r.(io.RuneReader) - var ret Decoder - if forceBufio || !ok { + if !ok { rr = bufio.NewReader(r) - if forceBufio { - ret.buf = rr.(*bufio.Reader) - } } - ret.io = &noWSRuneTypeScanner{ - inner: &runeTypeScannerImpl{ - inner: rr, + return &Decoder{ + io: &noWSRuneTypeScanner{ + inner: &runeTypeScannerImpl{ + inner: rr, + }, }, } - return &ret } func (dec *Decoder) DisallowUnknownFields() { dec.disallowUnknownFields = true } |