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)]

36 lines (30 loc) 833 B
import { composeParslet } from './Parslet.js' import { isQuestionMarkUnknownType } from './isQuestionMarkUnknownType.js' export const specialTypesParslet = composeParslet({ name: 'specialTypesParslet', accept: (type, next) => (type === '?' && isQuestionMarkUnknownType(next)) || type === 'null' || type === 'undefined' || type === '*', parsePrefix: parser => { if (parser.consume('null')) { return { type: 'JsdocTypeNull' } } if (parser.consume('undefined')) { return { type: 'JsdocTypeUndefined' } } if (parser.consume('*')) { return { type: 'JsdocTypeAny' } } if (parser.consume('?')) { return { type: 'JsdocTypeUnknown' } } throw new Error('Unacceptable token: ' + parser.lexer.current.text) } })