Skip to content

Commit

Permalink
Rename Message to Event
Browse files Browse the repository at this point in the history
  • Loading branch information
jbpros committed Jun 8, 2011
1 parent a164205 commit 8f77702
Show file tree
Hide file tree
Showing 2 changed files with 256 additions and 244 deletions.
123 changes: 64 additions & 59 deletions lib/cucumber.js
Expand Up @@ -237,58 +237,59 @@ Cucumber.Ast.TreeWalker = function(features, supportCodeLibrary, listeners) {
},

visitFeatures: function visitFeatures(features, callback) {
self.broadcastUserFunction(
Cucumber.Ast.TreeWalker.FEATURES_EVENT,
var event = Cucumber.Ast.TreeWalker.Event(Cucumber.Ast.TreeWalker.FEATURES_EVENT_NAME);
self.broadcastEventAroundUserFunction(
event,
function(callback) { features.acceptVisitor(self, callback); },
callback
);
},

visitFeature: function visitFeature(feature, callback) {
self.broadcastUserFunction(
Cucumber.Ast.TreeWalker.FEATURE_EVENT,
self.broadcastEventAroundUserFunction(
Cucumber.Ast.TreeWalker.FEATURE_EVENT_NAME,
feature,
function(callback) { feature.acceptVisitor(self, callback); },
callback
);
},

visitScenario: function visitScenario(scenario, callback) {
self.broadcastUserFunction(
Cucumber.Ast.TreeWalker.SCENARIO_EVENT,
self.broadcastEventAroundUserFunction(
Cucumber.Ast.TreeWalker.SCENARIO_EVENT_NAME,
scenario,
function(callback) { scenario.acceptVisitor(self, callback); },
callback
);
},

visitStep: function visitStep(step, callback) {
self.broadcastUserFunction(
Cucumber.Ast.TreeWalker.STEP_EVENT,
self.broadcastEventAroundUserFunction(
Cucumber.Ast.TreeWalker.STEP_EVENT_NAME,
step,
function(callback) { step.acceptVisitor(self, callback); },
callback
);
},

visitStepResult: function visitStepResult(stepResult, callback) {
self.broadcastMessage(
Cucumber.Ast.TreeWalker.STEP_RESULT_EVENT,
self.broadcastEvent(
Cucumber.Ast.TreeWalker.STEP_RESULT_EVENT_NAME,
stepResult,
callback
);
},

// broadcastUserFunction(event[, param1[, param2[, ...]]], userFunction, callback)
// message = event + payload (payload is all parameters)
broadcastUserFunction: function broadcastUserFunction() {
var message = self.extractMessageFromArguments(arguments);
// broadcastEventAroundUserFunction(event[, param1[, param2[, ...]]], userFunction, callback)
// event = event + payload (payload is all parameters)
broadcastEventAroundUserFunction: function broadcastEventAroundUserFunction() {
var event = self.extractEventFromArguments(arguments);
var userFunction = self.extractUserFunctionFromArguments(arguments);
var callback = self.extractCallbackFromArguments(arguments);
var callUserFunction = self.wrapUserFunctionAndAfterMessageBroadcast(userFunction, message, callback);
self.broadcastBeforeMessage(message, callUserFunction);
var callUserFunction = self.wrapUserFunctionAndAfterEventBroadcast(userFunction, event, callback);
self.broadcastBeforeEvent(event, callUserFunction);

// var message = arguments[0];
// var event = arguments[0];
// var parameters = [];
// if (arguments.length > 3) {
// for(var i = 1; i < arguments.length - 2; i++) {
Expand All @@ -297,72 +298,72 @@ Cucumber.Ast.TreeWalker = function(features, supportCodeLibrary, listeners) {
// };
// var userFunction = arguments[arguments.length - 2];
// var callback = arguments[arguments.length - 1];
// var beforeMessage = Cucumber.Ast.TreeWalker.BEFORE_MESSAGE_PREFIX + message;
// var afterMessage = Cucumber.Ast.TreeWalker.AFTER_MESSAGE_PREFIX + message;
// var afterParameters = [afterMessage].concat(parameters);
// var beforeEvent = Cucumber.Ast.TreeWalker.BEFORE_EVENT_NAME_PREFIX + event;
// var afterEvent = Cucumber.Ast.TreeWalker.AFTER_EVENT_NAME_PREFIX + event;
// var afterParameters = [afterEvent].concat(parameters);
// afterParameters.push(callback);
// var beforeParameters = [beforeMessage].concat(parameters);
// var beforeParameters = [beforeEvent].concat(parameters);
// beforeParameters.push(userFunctionCaller);
// function userFunctionCaller(callback) {
// userFunction(afterMessageBroadcastCaller);
// userFunction(afterEventBroadcastCaller);
// }
// function afterMessageBroadcastCaller(callback) {
// self.broadcastMessage.apply(this, afterParameters);
// function afterEventBroadcastCaller(callback) {
// self.broadcastEvent.apply(this, afterParameters);
// };

// self.broadcastMessage.apply(this, beforeParameters);
// self.broadcastEvent.apply(this, beforeParameters);
},

extractMessageFromArguments: function extractMessageFromArguments(argumentsObject) {
extractEventFromArguments: function extractEventFromArguments(argumentsObject) {
var argumentsArray = Cucumber.Util.Arguments(argumentsObject);
var message = argumentsArray.slice(
Cucumber.Ast.TreeWalker.NON_MESSAGE_LEADING_PARAMETERS_COUNT,
-Cucumber.Ast.TreeWalker.NON_MESSAGE_TRAILING_PARAMETERS_COUNT
var event = argumentsArray.slice(
Cucumber.Ast.TreeWalker.NON_EVENT_LEADING_PARAMETERS_COUNT,
-Cucumber.Ast.TreeWalker.NON_EVENT_TRAILING_PARAMETERS_COUNT
);
return message;
return event;
},

extractUserFunctionFromArguments: function extractUserFunctionFromArguments(argumentsObject) {
var nonMessageArguments = self.extractNonMessageArgumentsFromArguments(argumentsObject);
var userFunction = nonMessageArguments.unshift();
var nonEventArguments = self.extractNonEventArgumentsFromArguments(argumentsObject);
var userFunction = nonEventArguments.unshift();
return userFunction;
},

extractCallbackFromArguments: function extractCallbackFromArguments(argumentsObject) {
var nonMessageArguments = self.extractNonMessageArgumentsFromArguments(argumentsObject);
var callback = nonMessageArguments.pop();
var nonEventArguments = self.extractNonEventArgumentsFromArguments(argumentsObject);
var callback = nonEventArguments.pop();
return callback;
},

extractNonMessageArgumentsFromArguments: function extractNonMessageArgumentsFromArguments(argumentsObject) {
var argumentsArray = Cucumber.Util.Arguments(argumentsObject);
var nonMessageArguments = argumentsArray.slice(-Cucumber.Ast.TreeWalker.NON_MESSAGE_TRAILING_PARAMETERS_COUNT);
return nonMessageArguments;
extractNonEventArgumentsFromArguments: function extractNonEventArgumentsFromArguments(argumentsObject) {
var argumentsArray = Cucumber.Util.Arguments(argumentsObject);
var nonEventArguments = argumentsArray.slice(-Cucumber.Ast.TreeWalker.NON_EVENT_TRAILING_PARAMETERS_COUNT);
return nonEventArguments;
},

wrapUserFunctionAndAfterMessageBroadcast: function wrapUserFunctionAndAfterMessageBroadcast(userFunction, message, callback) {
var callAfterMessageBroadcast = self.wrapAfterMessageBroadcast(message, callback);
return function callUserFunctionAndBroadcastAfterMessage() {
userFunction(callAfterMessageBroadcast);
wrapUserFunctionAndAfterEventBroadcast: function wrapUserFunctionAndAfterEventBroadcast(userFunction, event, callback) {
var callAfterEventBroadcast = self.wrapAfterEventBroadcast(event, callback);
return function callUserFunctionAndBroadcastAfterEvent() {
userFunction(callAfterEventBroadcast);
};
},

wrapAfterMessageBroadcast: function wrapAfterMessageBroadcast(message, callback) {
return function() { self.broadcastAfterMessage(message, callback); };
wrapAfterEventBroadcast: function wrapAfterEventBroadcast(event, callback) {
return function() { self.broadcastAfterEvent(event, callback); };
},

broadcastBeforeMessage: TODO("broadcastBeforeMessage()"),
broadcastBeforeEvent: TODO("broadcastBeforeEvent()"),

broadcastAfterMessage: TODO("broadcastAfterMessage()"),
broadcastAfterEvent: TODO("broadcastAfterEvent()"),

broadcastMessage: function broadcastMessage() {
var message = arguments[0];
broadcastEvent: function broadcastEvent() {
var event = arguments[0];
var parameters = [];
for(var i = 1; i < arguments.length; i++) {
parameters.push(arguments[i]);
};
listeners.syncForEach(function(listener) {
var hearMethodName = Cucumber.Ast.TreeWalker.HEAR_METHOD_PREFIX + message;
var hearMethodName = Cucumber.Ast.TreeWalker.HEAR_METHOD_PREFIX + event;
listener[hearMethodName].apply(this, parameters);
});
},
Expand All @@ -374,16 +375,20 @@ Cucumber.Ast.TreeWalker = function(features, supportCodeLibrary, listeners) {
return self;
};

Cucumber.Ast.TreeWalker.FEATURES_MESSAGE = 'Features';
Cucumber.Ast.TreeWalker.FEATURE_MESSAGE = 'Feature';
Cucumber.Ast.TreeWalker.SCENARIO_MESSAGE = 'Scenario';
Cucumber.Ast.TreeWalker.STEP_MESSAGE = 'Step';
Cucumber.Ast.TreeWalker.STEP_RESULT_MESSAGE = 'StepResult';
Cucumber.Ast.TreeWalker.BEFORE_MESSAGE_PREFIX = 'Before';
Cucumber.Ast.TreeWalker.AFTER_MESSAGE_PREFIX = 'After';
Cucumber.Ast.TreeWalker.HEAR_METHOD_PREFIX = 'hear';
Cucumber.Ast.TreeWalker.NON_MESSAGE_LEADING_PARAMETERS_COUNT = 0;
Cucumber.Ast.TreeWalker.NON_MESSAGE_TRAILING_PARAMETERS_COUNT = 2;
Cucumber.Ast.TreeWalker.FEATURES_EVENT_NAME = 'Features';
Cucumber.Ast.TreeWalker.FEATURE_EVENT_NAME = 'Feature';
Cucumber.Ast.TreeWalker.SCENARIO_EVENT_NAME = 'Scenario';
Cucumber.Ast.TreeWalker.STEP_EVENT_NAME = 'Step';
Cucumber.Ast.TreeWalker.STEP_RESULT_EVENT_NAME = 'StepResult';
Cucumber.Ast.TreeWalker.BEFORE_EVENT_NAME_PREFIX = 'Before';
Cucumber.Ast.TreeWalker.AFTER_EVENT_NAME_PREFIX = 'After';
Cucumber.Ast.TreeWalker.HEAR_METHOD_PREFIX = 'hear';
Cucumber.Ast.TreeWalker.NON_EVENT_LEADING_PARAMETERS_COUNT = 0;
Cucumber.Ast.TreeWalker.NON_EVENT_TRAILING_PARAMETERS_COUNT = 2;

Cucumber.Ast.TreeWalker.Event = function(event, payload) {
throw("TODO: Event");
};

Cucumber.SupportCode = {};

Expand Down

0 comments on commit 8f77702

Please sign in to comment.