# All files / src/parsers/abstract collection.js

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

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

    38x

    517x

     // @flow

    import P from 'parsimmon'
    import CollectionCoreParser from '../collections/collectionCore'
    import crap from '../crap'
    import type { CollectionCoreNodeType, ParserType } from '../../types'

    type ListLikeParserDefinitionType = {|
      name: string,
      open: string,
      close: string
    |};

    export default ({
      name,
      open,
      close
    }: ListLikeParserDefinitionType): ParserType =>
      CollectionCoreParser.trim(crap)
        .wrap(P.string(open), P.string(close))
        .map((value: {value: CollectionCoreNodeType}): CollectionCoreNodeType => value.value)
        .node(name)
        .desc(name)