All files / src/parsers primitive.js

100% Statements 5/5
100% Branches 0/0
100% Functions 1/1
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              19x 19x 19x   19x             1760x          
// @flow
/* eslint no-control-regex: 0 */
/* eslint no-useless-escape: 0 */
 
import P from 'parsimmon'
import type { NodeType } from '../types'
 
const keywords = ['null', 'true', 'false']
export const StringParserRegExp = /("(((?=\\)\\(["\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^"\\\0-\x1F\x7F]+)*")/
const NumberParserRegExp = /(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/
 
const options = [
  ...keywords,
  StringParserRegExp.source,
  NumberParserRegExp.source
]
 
export default P.regex(new RegExp(`(${options.join('|')})`)).map(
  (value: string): NodeType => ({
    name: 'primitive',
    value
  })
)