cucumber
Version:
The official JavaScript implementation of Cucumber.
55 lines (19 loc) • 2.73 kB
JavaScript
;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);
};
}