summaryrefslogtreecommitdiff
path: root/decode_scan.go
diff options
context:
space:
mode:
Diffstat (limited to 'decode_scan.go')
-rw-r--r--decode_scan.go37
1 files changed, 4 insertions, 33 deletions
diff --git a/decode_scan.go b/decode_scan.go
index 387fcea..261aaa6 100644
--- a/decode_scan.go
+++ b/decode_scan.go
@@ -77,6 +77,7 @@ func (sc *runeTypeScannerImpl) ReadRuneType() (rune, int, internal.RuneType, err
_, _, _ = sc.inner.ReadRune()
default:
sc.initialized = true
+ again:
var err error
sc.rRune, sc.rSize, err = sc.inner.ReadRune()
sc.offset += int64(sc.rSize)
@@ -91,6 +92,9 @@ func (sc *runeTypeScannerImpl) ReadRuneType() (rune, int, internal.RuneType, err
} else {
sc.rErr = nil
}
+ if sc.rType == internal.RuneTypeSpace {
+ goto again
+ }
case io.EOF:
sc.rType, err = sc.parser.HandleEOF()
if err != nil {
@@ -147,39 +151,6 @@ func (sc *runeTypeScannerImpl) InputOffset() int64 {
return ret
}
-// noWSRuneTypeScanner /////////////////////////////////////////////////////////////////////////////
-
-type noWSRuneTypeScanner struct {
- inner runeTypeScanner
-}
-
-var _ runeTypeScanner = (*noWSRuneTypeScanner)(nil)
-
-func (sc *noWSRuneTypeScanner) ReadRuneType() (rune, int, internal.RuneType, error) {
-again:
- r, s, t, e := sc.inner.ReadRuneType()
- if t == internal.RuneTypeSpace {
- goto again
- }
- return r, s, t, e
-}
-
-func (sc *noWSRuneTypeScanner) ReadRune() (rune, int, error) {
- r, s, t, e := sc.ReadRuneType()
- switch t {
- case internal.RuneTypeEOF:
- return 0, 0, io.EOF
- case internal.RuneTypeError:
- return 0, 0, e
- default:
- return r, s, nil
- }
-}
-
-func (sc *noWSRuneTypeScanner) UnreadRune() error { return sc.inner.UnreadRune() }
-func (sc *noWSRuneTypeScanner) Reset() { sc.inner.Reset() }
-func (sc *noWSRuneTypeScanner) InputOffset() int64 { return sc.inner.InputOffset() }
-
// elemRuneTypeScanner /////////////////////////////////////////////////////////////////////////////
type elemRuneTypeScanner struct {