UNPKG

cucumber

Version:

The official JavaScript implementation of Cucumber.

55 lines (19 loc) 2.73 kB
'use strict';Object.defineProperty(exports, "__esModule", { value: true });var _defineProperty2 = require('babel-runtime/helpers/defineProperty');var _defineProperty3 = _interopRequireDefault(_defineProperty2);exports. defineHook = defineHook;exports. defineStep = defineStep;exports. registerHandler = registerHandler;var _lodash = require('lodash');var _lodash2 = _interopRequireDefault(_lodash);var _hook_definition = require('../models/hook_definition');var _hook_definition2 = _interopRequireDefault(_hook_definition);var _stacktraceJs = require('stacktrace-js');var _stacktraceJs2 = _interopRequireDefault(_stacktraceJs);var _step_definition = require('../models/step_definition');var _step_definition2 = _interopRequireDefault(_step_definition);function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { default: obj };}function defineHook(collection) {return function (options, code) {if (typeof options === 'string') {options = { tags: options };} else if (typeof options === 'function') {code = options;options = {};}var _getDefinitionLineAnd = getDefinitionLineAndUri();var line = _getDefinitionLineAnd.line;var uri = _getDefinitionLineAnd.uri;var hookDefinition = new _hook_definition2.default({ code: code, line: line, options: options, uri: uri });collection.push(hookDefinition);};}function defineStep(collection) {return function (pattern, options, code) {if (typeof options === 'function') {code = options;options = {};}var _getDefinitionLineAnd2 = getDefinitionLineAndUri();var line = _getDefinitionLineAnd2.line;var uri = _getDefinitionLineAnd2.uri;var stepDefinition = new _step_definition2.default({ code: code, line: line, options: options, pattern: pattern, uri: uri });collection.push(stepDefinition);};}function getDefinitionLineAndUri() {var stackframes = _stacktraceJs2.default.getSync();var stackframe = stackframes.length > 2 ? stackframes[2] : stackframes[0];var line = stackframe.getLineNumber();var uri = stackframe.getFileName() || 'unknown';return { line: line, uri: uri };}function registerHandler(cwd, collection) { return function (eventName, options, handler) {var _$assign; if (typeof options === 'function') { handler = options; options = {}; }var _getDefinitionLineAnd3 = getDefinitionLineAndUri();var line = _getDefinitionLineAnd3.line;var uri = _getDefinitionLineAnd3.uri; var listener = _lodash2.default.assign((_$assign = { cwd: cwd }, (0, _defineProperty3.default)(_$assign, 'handle' + eventName, handler), (0, _defineProperty3.default)(_$assign, 'line', line), (0, _defineProperty3.default)(_$assign, 'uri', uri), _$assign), options); collection.push(listener); }; }