index.js 882 B

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * escallmatch:
  3. * ECMAScript CallExpression matcher made from function/method signature
  4. *
  5. * https://github.com/twada/escallmatch
  6. *
  7. * Copyright (c) 2014-2016 Takuto Wada
  8. * Licensed under the MIT license.
  9. * https://github.com/twada/escallmatch/blob/master/LICENSE
  10. */
  11. 'use strict';
  12. /* jshint -W024 */
  13. var esprima = require('esprima');
  14. var CallMatcher = require('call-matcher');
  15. var notCallExprMessage = 'Argument should be in the form of CallExpression';
  16. function createMatcher (signatureStr, options) {
  17. var ast = extractExpressionFrom(esprima.parse(signatureStr));
  18. return new CallMatcher(ast, options || {});
  19. }
  20. function extractExpressionFrom (tree) {
  21. var statement = tree.body[0];
  22. if (statement.type !== 'ExpressionStatement') {
  23. throw new Error(notCallExprMessage);
  24. }
  25. return statement.expression;
  26. }
  27. module.exports = createMatcher;