JavaScript implementation of Ruby/Crystal's StringScanner. Useful for writing tokenizers.
const StringScanner = require('stringscan')
const s = new StringScanner('This is an example string')
s.scan(/\w+/) // "This"
s.scan(/\w+/) // null
s.scan(/\s+/) // " "
s.scan(/\s+/) // null
s.scan(/\w+/) // "is"
s.eos() // false
s.scan(/\s+/) // " "
s.scan(/\w+/) // "an"
s.scan(/\s+/) // " "
s.scan(/\w+/) // "example"
s.scan(/\s+/) // " "
s.scan(/\w+/) // "string"
s.eos() // true
s.scan(/\s+/) // null
s.scan(/\w+/) // null
For more examples see the examples directory.
Kind: inner class of stringscan
See: https://github.com/watzon/stringscan.js/tree/master/examples
- ~StringScanner
- .offset ⇒
number
- .offset ⇒
number
- .rest ⇒
string
- .scan(pattern) ⇒
string
|null
- .scanUntil(pattern) ⇒
string
|null
- .skip(pattern) ⇒
number
|null
- .skipUntil(pattern) ⇒
number
|null
- .check(pattern) ⇒
string
|null
- .checkUntil(pattern) ⇒
string
|null
- .charAt(index) ⇒
string
|null
- .eos() ⇒
boolean
- .reset()
- .terminate()
- .peek()
- .take()
- .toString()
- .offset ⇒
Set the current offset position, keeping it within the bounds of the given string.
Kind: instance property of StringScanner
Param | Type | Description |
---|---|---|
position | number |
The position to set the offset to. |
Returns the current scan offset.
Kind: instance property of StringScanner
Returns the remainder of the string after the scan offset.
Kind: instance property of StringScanner
Tries to match the pattern at the current position. If there is a match, the scanner advances to the scan offset, the last match is saved, and it returns the matched string. Otherwise it returns null.
Kind: instance method of StringScanner
Param | Type | Description |
---|---|---|
pattern | RegExp |
The pattern to match against. |
Scans the string until the pattern is matched. Returns the substring up to and including the end of the match, the last match is saved, and advances the scan offset. Returns null if no match.
Kind: instance method of StringScanner
Param | Type | Description |
---|---|---|
pattern | RegExp |
The pattern to match against. |
Attempts to skip over the given pattern beginning with the scan offset. In other words, the pattern is not anchored to the current scan offset.
If there is a match, the scanner advances the scan offset, the last match is saved, and it returns the size of the skipped match. Otherwise it returns null and does not advance the offset.
Kind: instance method of StringScanner
Param | Type | Description |
---|---|---|
pattern | RegExp |
The pattern to match against. |
Attempts to skip until the given pattern is found after the scan offset. In other words, the pattern is not anchored to the current scan offset.
If there is a match, the scanner advances the scan offset, the last match is saved, and it returns the size of the skip. Otherwise it returns null and does not advance the offset.
Kind: instance method of StringScanner
Param | Type | Description |
---|---|---|
pattern | RegExp |
The pattern to match against. |
Returns the value that scan
would return, without advancing the scan
offset. The last match is still saved, however.
Kind: instance method of StringScanner
Param | Type | Description |
---|---|---|
pattern | RegExp |
The pattern to match against. |
Returns the value that scanUntil
would return, without advancing the
scan offset. The last match is still saved, however.
Kind: instance method of StringScanner
Param | Type | Description |
---|---|---|
pattern | RegExp |
The pattern to match against. |
Returns the character at the given index, or null if the index is out of range.
Kind: instance method of StringScanner
Param | Type | Description |
---|---|---|
index | number |
The index in the original string to fetch |
Returns true if the scan offset is at the end of the string.
Kind: instance method of StringScanner
Resets the scan offset to the beginning and clears the last match.
Kind: instance method of StringScanner
Moves the scan offset to the end of the string and clears the last match.
Kind: instance method of StringScanner
Extracts a substring of length len from the current offset, without advancing the scan offset.
Kind: instance method of StringScanner
Extracts a substring of length len from the current offset, advances the scan offset, and returns the string.
Kind: instance method of StringScanner
Returns a string representation of this StringScanner.
Kind: instance method of StringScanner
© 2020 Chris Watson. Licensed under the MIT License. All rights reserved.