This module has stopped working since
babylon@6.13.1.
Please use Babylon's babylon.parseExpression()
instead.
Validates a string as a JavaScript expression using Babylon
An alternative version of this module using Acorn instead of Babylon is available at is-expression. While this module aims to support all ECMAScript features, even spec proposals in Stage 0, is-expression is more conservative on the features it implements. Pick your poison.
npm install is-expression-babylon
const isExpression = require('is-expression-babylon');
Validates a string as a JavaScript expression.
src
contains the source.
options
can contain any Babylon options, or any of the following:
throw
: Throw an error if the string is not an expression. The error can be an Acorn error, with location information inerr.loc
anderr.pos
. Defaults tofalse
.strict
: Use strict mode when trying to parse the string. Defaults tofalse
. Even if this option isfalse
, if you have providedoptions.sourceType === 'module'
which imples strict mode under ES2015, strict mode will be used.lineComment
: Whentrue
, allows line comments in the expression. Defaults tofalse
for safety.
See the examples below for usage.
Get the Babylon Expression AST node of a string.
src
contains the source.
options
can contain any Babylon options, or any of the following:
strict
: Use strict mode when trying to parse the string. Defaults tofalse
. Even if this option isfalse
, if you have providedoptions.sourceType === 'module'
which imples strict mode under ES2015, strict mode will be used.lineComment
: Whentrue
, allows line comments in the expression. Defaults tofalse
for safety.
If the string is not an expression, an error is thrown.
const isExpression = require('is-expression-babylon');
isExpression('myVar');
//=> true
isExpression('var');
//=> false
isExpression('["an", "array", "\'s"].indexOf("index")');
//=> true
isExpression('var', {throw: true});
// SyntaxError: Unexpected token (1:0)
// at Parser.pp.raise (acorn/dist/acorn.js:940:13)
// at ...
isExpression('public');
//=> true
isExpression('public', {strict: true});
//=> false
isExpression('abc // my comment');
//=> false
isExpression('abc // my comment', {lineComment: true});
//=> true
const expression = isExpression.getExpression('abc');
//=> Node { type: 'Identifier', ... }
MIT