12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package ini
- // skipper is used to skip certain blocks of an ini file.
- // Currently skipper is used to skip nested blocks of ini
- // files. See example below
- //
- // [ foo ]
- // nested = ; this section will be skipped
- // a=b
- // c=d
- // bar=baz ; this will be included
- type skipper struct {
- shouldSkip bool
- TokenSet bool
- prevTok Token
- }
- func newSkipper() skipper {
- return skipper{
- prevTok: emptyToken,
- }
- }
- func (s *skipper) ShouldSkip(tok Token) bool {
- if s.shouldSkip &&
- s.prevTok.Type() == TokenNL &&
- tok.Type() != TokenWS {
- s.Continue()
- return false
- }
- s.prevTok = tok
- return s.shouldSkip
- }
- func (s *skipper) Skip() {
- s.shouldSkip = true
- s.prevTok = emptyToken
- }
- func (s *skipper) Continue() {
- s.shouldSkip = false
- s.prevTok = emptyToken
- }
|