12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- 'use strict';
- var acorn = require('acorn');
- var objectAssign = require('object-assign');
- module.exports = isExpression;
- var DEFAULT_OPTIONS = {
- throw: false,
- strict: false,
- lineComment: false
- };
- function isExpression(src, options) {
- options = objectAssign({}, DEFAULT_OPTIONS, options);
- try {
- var parser = new acorn.Parser(options, src, 0);
- if (options.strict) {
- parser.strict = true;
- }
- if (!options.lineComment) {
- parser.skipLineComment = function (startSkip) {
- this.raise(this.pos, 'Line comments not allowed in an expression');
- };
- }
- parser.nextToken();
- parser.parseExpression();
- if (parser.type !== acorn.tokTypes.eof) {
- parser.unexpected();
- }
- } catch (ex) {
- if (!options.throw) {
- return false;
- }
- throw ex;
- }
- return true;
- }
|