package jx
import (
"github.com/go-faster/errors"
)
type ArrIter struct {
d *Decoder
err error
closed bool
comma bool
}
func (d *Decoder ) ArrIter () (ArrIter , error ) {
if err := d .consume ('[' ); err != nil {
return ArrIter {}, errors .Wrap (err , `"[" expected` )
}
if err := d .incDepth (); err != nil {
return ArrIter {}, err
}
if _ , err := d .more (); err != nil {
return ArrIter {}, err
}
d .unread ()
return ArrIter {d : d }, nil
}
func (i *ArrIter ) Next () bool {
if i .closed || i .err != nil {
return false
}
dec := i .d
c , err := dec .more ()
if err != nil {
i .err = err
return false
}
if c == ']' {
i .closed = true
i .err = dec .decDepth ()
return false
}
if i .comma {
if c != ',' {
err := badToken (c , dec .offset ()-1 )
i .err = errors .Wrap (err , `"," expected` )
return false
}
} else {
dec .unread ()
}
i .comma = true
return true
}
func (i *ArrIter ) Err () error {
return i .err
}
The pages are generated with Golds v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds .