1 // Package parser is a simple helper package for parsing strings, byte slices and io.Readers 2 package parser // import "vimagination.zapto.org/parser" 3 4 import ( 5 "bufio" 6 "io" 7 ) 8 9 // New creates a new Parser from the given Tokeniser 10 func New(t Tokeniser) Parser { 11 return Parser{Tokeniser: t} 12 } 13 14 // NewStringTokeniser returns a Tokeniser which uses a string. 15 func NewStringTokeniser(str string) Tokeniser { 16 return Tokeniser{ 17 tokeniser: &strParser{ 18 str: str, 19 }, 20 } 21 } 22 23 // NewByteTokeniser returns a Tokeniser which uses a byte slice. 24 func NewByteTokeniser(data []byte) Tokeniser { 25 return Tokeniser{ 26 tokeniser: &byteParser{ 27 data: data, 28 }, 29 } 30 } 31 32 // NewReaderTokeniser returns a Tokeniser which uses an io.Reader 33 func NewReaderTokeniser(reader io.Reader) Tokeniser { 34 return Tokeniser{ 35 tokeniser: &readerParser{ 36 reader: bufio.NewReader(reader), 37 }, 38 } 39 }