InfallibleParser()<T>
type InfallibleParser<T>: (data) => ParseSuccess<T>;
A parser that always succeeds
Type Parameters
Type Parameter |
---|
T |
Parameters
Parameter | Type |
---|---|
data | unknown |
Returns
ParseSuccess
<T
>
OptionalParser()<T>
type OptionalParser<T>: (data) => ParseResult<T | undefined | OmitProperty>;
Special parser to check optional values
Type Parameters
Type Parameter |
---|
T |
Parameters
Parameter | Type |
---|---|
data | unknown |
Returns
ParseResult
<T
| undefined
| OmitProperty
>
Parser()<T>
type Parser<T>: (data) => ParseResult<T>;
Type Parameters
Type Parameter |
---|
T |
Parameters
Parameter | Type |
---|---|
data | unknown |
Returns
ParseResult
<T
>
RequiredParser()<T>
type RequiredParser<T>: (data) => ParseResult<Exclude<T, OmitProperty>>;
A parser that does not represent an optional property.
Type Parameters
Type Parameter |
---|
T |
Parameters
Parameter | Type |
---|---|
data | unknown |
Returns
ParseResult
<Exclude
<T
, OmitProperty
>>
UnsuccessfulParser()
type UnsuccessfulParser: (data) => ParseFailure;
A parser that always fails
Parameters
Parameter | Type |
---|---|
data | unknown |
Returns
chain()
function chain<A, B>(parser, parseSuccess): Parser<B>
Transform successful results into either success or failure. This is useful for chaining parsers.
Example
After parsing an array of numbers, ensure it is non-empty:
const parseNonEmptyArray = chain(array(parseNumber), (value) =>
value.length > 0
? success(value)
: failure('Expected non-empty array'),
)
Type Parameters
Type Parameter |
---|
A |
B |
Parameters
Parameter | Type | Description |
---|---|---|
parser | Parser <A > | |
parseSuccess | (value ) => ParseResult <B > |
Returns
Parser
<B
>
map()
function map<A, B>(parser, mapSuccess): Parser<B>
Transform the values of successful results.
Example
Transform strings to uppercase
const parseToUpperCase = map(parseString, (str) => str.toUpperCase())
parseToUpperCase('hello') // -> ParseSuccess<'HELLO'>
parseToUpperCase(123) // -> ParseFailure
Type Parameters
Type Parameter |
---|
A |
B |
Parameters
Parameter | Type | Description |
---|---|---|
parser | Parser <A > | |
mapSuccess | (value ) => B |
Returns
Parser
<B
>
parserFromGuard()
function parserFromGuard<T>(guard): Parser<T>
Construct a parser from a type guard. Tip: construct parsers from scratch for better error messages, and generally more flexibility.
Example
const isUser = objectGuard({
id: isNumber,
name: isString,
})
const parseUser = parserFromGuard(isUser)
@param guard
### Type Parameters
| Type Parameter |
| ------ |
| `T` |
### Parameters
| Parameter | Type |
| ------ | ------ |
| `guard` | [`Guard`](../guards/Guard.md#guardt)\<`T`\> |
### Returns
[`Parser`](Parser.md#parsert)\<`T`\>
***
## recover()
```ts
function recover<A>(parser, parseFailure): Parser<A>
Transform failed results into either success or failure. This is useful for error handling.
Example
Fall back to a default value if parsing fails:
const parseCount = recover(
parseNumber,
() => 0
)
Type Parameters
Type Parameter |
---|
A |
Parameters
Parameter | Type | Description |
---|---|---|
parser | Parser <A > | |
parseFailure | (error ) => ParseResult <A > |
Returns
Parser
<A
>