/** * escallmatch: * ECMAScript CallExpression matcher made from function/method signature * * https://github.com/twada/escallmatch * * Copyright (c) 2014-2016 Takuto Wada * Licensed under the MIT license. * https://github.com/twada/escallmatch/blob/master/LICENSE */ 'use strict'; /* jshint -W024 */ var esprima = require('esprima'); var CallMatcher = require('call-matcher'); var notCallExprMessage = 'Argument should be in the form of CallExpression'; function createMatcher (signatureStr, options) { var ast = extractExpressionFrom(esprima.parse(signatureStr)); return new CallMatcher(ast, options || {}); } function extractExpressionFrom (tree) { var statement = tree.body[0]; if (statement.type !== 'ExpressionStatement') { throw new Error(notCallExprMessage); } return statement.expression; } module.exports = createMatcher;