All files / src/parsers primitive.js

100% Statements 7/7
100% Branches 0/0
100% Functions 1/1
100% Lines 7/7

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              19x 19x 19x 19x 19x   19x             1792x          
// @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']
const DoubleQuoteStringRegexp = /("(((?=\\)\\(["'\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^"\\\0-\x1F\x7F]+)*")/
const SingleQuoteStringRegexp = /('(((?=\\)\\(['"\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^'\\\0-\x1F\x7F]+)*')/
export const StringParserRegExp = new RegExp(`(${DoubleQuoteStringRegexp.source}|${SingleQuoteStringRegexp.source})`)
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
  })
)