All files / src/parsers functionCall.js

100% Statements 5/5
100% Branches 2/2
100% Functions 2/2
100% Lines 5/5

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                      19x 7x 7x 7x         167x                      
// @flow
 
import P from 'parsimmon'
import crap from './crap'
 
import type {
  FunctionCallNodeType,
  NodeType,
  IdentifierNodeType
} from '../types'
 
const FunctionCallParser = P.lazy((): mixed => {
  const TupleParser = require('./collections/tuple').default
  const IdentifierParser = require('./identifier').default
  return P.seq(IdentifierParser, crap, TupleParser.atMost(1)).map(
    ([left, _, right]: [
      IdentifierNodeType,
      mixed,
      NodeType
    ]): FunctionCallNodeType => ({
      name: 'functionCall',
      value: {
        left,
        right: right[0] || null
      }
    })
  )
})
 
export default FunctionCallParser