You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
877 B
Go
50 lines
877 B
Go
package shell
|
|
|
|
type WhitespaceParameters struct{}
|
|
|
|
func (p *WhitespaceParameters) SubParsers() []Parser {
|
|
return []Parser{
|
|
&BaseParser{
|
|
parameters: &CharParserParameters{},
|
|
},
|
|
}
|
|
}
|
|
|
|
func (p *WhitespaceParameters) Supports(charsBefore []rune, r rune) bool {
|
|
return isWhitespace(r)
|
|
}
|
|
|
|
func (p *WhitespaceParameters) ShouldLeave(charsBefore []rune, r rune) bool {
|
|
return !p.Supports(charsBefore, r)
|
|
}
|
|
|
|
func (p *WhitespaceParameters) MakeToken() Token {
|
|
return &Whitespace{}
|
|
}
|
|
|
|
func (p *WhitespaceParameters) Leave(i *CharIterator) error {
|
|
return i.Previous()
|
|
}
|
|
|
|
type Whitespace struct {
|
|
tokens []Token
|
|
}
|
|
|
|
func (q *Whitespace) AddToken(s Token) {
|
|
q.tokens = append(q.tokens, s)
|
|
}
|
|
|
|
func (q *Whitespace) Tokens() []Token {
|
|
return q.tokens
|
|
}
|
|
|
|
func (q *Whitespace) String() string {
|
|
var str string
|
|
|
|
for _, t := range q.Tokens() {
|
|
str += t.String()
|
|
}
|
|
|
|
return str
|
|
}
|