type

Scanner

src @Js
class Scanner : Obj

Scanner is a utility class for parsing lines

constructors

methods

find

Scan until we find the given ch.

findMatch

Consume characters until the given function returns true, or the end-of-line is reached.

hasNext

Are there more characters to consume

match

Consume characters while the given function returns true and return the number of characters consumed.

matchMultiple

Consume as many ch in a row as possible and return the number consumed.

next

Advance the scanner to the next character

nextCh

Check if the specified char is next and advance the position.

nextStr

Check if we have the specified content on the line and advance the position.

peek

Peek at the next character without consuming it

peekCodePoint

Peek at the next code point

peekPrevCodePoint

Peek at the previous codepoint

pos

Get the current position (current line, index into that line)

setPos

Set the current position for the scanner

source

For cases where the caller appends the result to a StrBuf, we could offer another method to avoid some unnecessary copying.

whitespace

Consume whitespace and return the number of whitespace characters consumed

Slot Details

find

src Int find(Int ch)

Scan until we find the given ch. Return the number of characters skipped, or -1 if we hit the end of the line.

findMatch

src Int findMatch(|Int->Bool| f)

Consume characters until the given function returns true, or the end-of-line is reached. Return the number of characters skipped, or -1 if we reach the end.

hasNext

src Bool hasNext()

Are there more characters to consume

make

src new make(SourceLine[] lines, Int lineIndex := 0, Int index := 0)

makeLine

src new makeLine(SourceLine line)

makeSourceLines

src new makeSourceLines(SourceLines sourceLines)

match

src Int match(|Int->Bool| f)

Consume characters while the given function returns true and return the number of characters consumed.

matchMultiple

src Int matchMultiple(Int ch)

Consume as many ch in a row as possible and return the number consumed.

next

src Void next()

Advance the scanner to the next character

nextCh

src Bool nextCh(Int ch)

Check if the specified char is next and advance the position.

ch: the char to check (including newline chars)

Return true if matched and position was advanced; false otherwise

nextStr

src Bool nextStr(Str content)

Check if we have the specified content on the line and advance the position. Note that if you want to match newline characters, use nextCh.

content: the text content to match on a single line (excluding newline)

Return true if matched and position was advanced; false otherwise

peek

src Int peek()

Peek at the next character without consuming it

peekCodePoint

src Int peekCodePoint()

Peek at the next code point

peekPrevCodePoint

src Int peekPrevCodePoint()

Peek at the previous codepoint

pos

src Position pos()

Get the current position (current line, index into that line)

setPos

src Void setPos(Position pos)

Set the current position for the scanner

source

src SourceLines source(Position begin, Position end)

For cases where the caller appends the result to a StrBuf, we could offer another method to avoid some unnecessary copying.

whitespace

src Int whitespace()

Consume whitespace and return the number of whitespace characters consumed

Whitespace is defined as space, \t, \n, \u000B, \f, and \r