Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 9x 9x 642x | // @flow import P from 'parsimmon' import crap from './crap' import type { TupleNodeType, ParserType, NodeType } from '../types' export default P.lazy((): ParserType => { const TupleParser = require('./collections/tuple').default return P.seq( TupleParser, P.seq( P.string('if') .trim(crap) .then(TupleParser), P.string('else') .trim(crap) .then(TupleParser) ).atMost(1) ).map( ([tuple, rest]: [ TupleNodeType, Array<[TupleNodeType, TupleNodeType]> ]): NodeType => rest.length === 0 ? tuple : { name: 'ternary', value: { left: tuple, middle: rest[0][0], right: rest[0][1] } } ) }) |