2.4.2 • Published 1 year ago
@ikasoba000/parsing v2.4.2
parsing
Parsing is a small parser combinator.
example
import {ignore, every, token, regex} from "@ikasoba000/parsing"
const whitespace = ignore(regex(/\s+/))
const helloWorld = every(token("Hello,"), whitespace, token("world!"))
console.log(helloWorld("Hello, world!", 0)?.[0], helloWorld("hello, world!", 0)?.[0]) // [ 'hello,', 'world' ] undefined
usage
type Parser<T = string, E = never> = (src: string, index: number) => ParsingError | null | ParserResult<T, E>
token(pattern: string | RegExp): Parser
Generate a parser that matches a string or regexp.
regex(pattern: RegExp): Parser
Generate a parser that matches the regular expression.
option(parser: Parser): Parser
Generates an optional parser.
ignore(parser: Parser): IgnoreParser
If parsing succeeds, only the next index is returned.
some(...parsers: Parser[]): Parser
Generate a parser that matches any one of the parsers.
every(...parsers: Parser[]): Parser
Combine multiple parsers to produce a single parser. Even when nested, the array depth remains 1.
every(token("1"), token("2"), token("3"))("123", 0) // [["1", "2", "3"], 3]
every(every(token("1"), token("2")), token("3"))("123", 0) // [["1", "2", "3"], 3]
// Both the top and bottom parsers have the same function.
map<T>(parser: Parser, converter: x => T): Parser<T>
it is useful for generating values from strings that can be parsed.
map(token(/[0-9]+/), x => parseInt(x))("123", 0) // {type: "normal", res: 123, index: 0, length: 3 }
1.2.0
1 year ago
1.2.1
1 year ago
2.3.0
1 year ago
2.2.1
1 year ago
2.0.3
1 year ago
2.2.0
1 year ago
2.0.2
1 year ago
2.4.1
1 year ago
2.2.3
1 year ago
2.4.0
1 year ago
2.2.2
1 year ago
2.2.5
1 year ago
2.4.2
1 year ago
2.2.4
1 year ago
2.1.0
1 year ago
2.0.1
1 year ago
2.0.0
1 year ago
1.1.1
1 year ago
1.0.2
1 year ago
1.1.0
1 year ago
1.0.1
1 year ago
1.0.0
1 year ago
1.1.5
1 year ago
1.1.4
1 year ago
1.1.3
1 year ago
1.0.4
1 year ago
1.1.2
1 year ago
1.0.3
1 year ago
0.1.0
2 years ago