UNPKG

jsdoc-type-pratt-parser

Version:

[![Npm Package](https://badgen.net/npm/v/jsdoc-type-pratt-parser)](https://www.npmjs.com/package/jsdoc-type-pratt-parser) [![Test Status](https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/actions/workflows/test.yml/badge.svg?branch=main)]

30 lines (28 loc) 704 B
import { composeParslet } from './Parslet.js' import { Precedence } from '../Precedence.js' import { assertRootResult } from '../assertTypes.js' export const optionalParslet = composeParslet({ name: 'optionalParslet', accept: type => type === '=', precedence: Precedence.OPTIONAL, parsePrefix: parser => { parser.consume('=') return { type: 'JsdocTypeOptional', element: parser.parseType(Precedence.OPTIONAL), meta: { position: 'prefix' } } }, parseInfix: (parser, left) => { parser.consume('=') return { type: 'JsdocTypeOptional', element: assertRootResult(left), meta: { position: 'suffix' } } } })