# All files / src/parsers/collections tuple.js

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

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

    16x
    16x

    2069x

     // @flow

    import P from 'parsimmon'
    import type { NodeType, ParserType } from '../../types'

    export default P.lazy((): ParserType => {
      const SectionParser = require('../section').default
      return P.alt(
        P.seq(
          SectionParser,
          P.regexp(/\s*:\s*/)
            .then(SectionParser)
            .atMost(1)
        ).map(
          ([left, right]: [NodeType, Array<NodeType>]): NodeType =>
            right.length === 1
              ? {
                name: 'tuple',
                value: [left, right[0]]
              }
              : left
        )
      )
    })