mirror of
https://github.com/kbparagua/paloma
synced 2023-03-27 23:21:17 -04:00
Paloma.Agent
This commit is contained in:
parent
1c5f0c0483
commit
a3a2d6bc9e
4 changed files with 55 additions and 50 deletions
45
vendor/assets/javascripts/paloma/agent.js
vendored
Normal file
45
vendor/assets/javascripts/paloma/agent.js
vendored
Normal file
|
@ -0,0 +1,45 @@
|
|||
Paloma.Agent = function(controller){
|
||||
this.controller = controller;
|
||||
};
|
||||
|
||||
Paloma.Agent.prototype = {
|
||||
|
||||
perform: function(action){
|
||||
var callbacks = this._getCallbacksFor(action);
|
||||
this._executeCallbacks.call(callbacks);
|
||||
},
|
||||
|
||||
_getCallbacksFor: function(action){
|
||||
var callbacks = [];
|
||||
|
||||
for (var i = 0, n = this.controller.before.length; i < n; i++){
|
||||
var entry = parseEntry( this.before[i] );
|
||||
|
||||
if ( entry.methods.indexOf(methodName) != -1 )
|
||||
callbacks = callbacks.concat(entry.callbacks);
|
||||
}
|
||||
|
||||
return callbacks;
|
||||
},
|
||||
|
||||
_parseEntry: function(beforeEntry){
|
||||
var parts = beforeEntry.split('->'),
|
||||
data = {methods: [], callbacks: []};
|
||||
|
||||
if (parts[0]) data.methods = parts[0].trim().split(' ');
|
||||
if (parts[1]) data.callbacks = parts[1].trim().split(' ');
|
||||
|
||||
return data;
|
||||
},
|
||||
|
||||
_executeCallbacks: function(callbacks){
|
||||
for (var i = 0, n = callbacks.length; i < n; i++){
|
||||
var name = callbacks[i],
|
||||
callback = this.controller[name];
|
||||
|
||||
callback.call(this.controller);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
};
|
|
@ -1,51 +1,8 @@
|
|||
(function(){
|
||||
Paloma.BaseController = function(params){
|
||||
this.params = params;
|
||||
};
|
||||
|
||||
Paloma.BaseController = function(params){
|
||||
this.params = params;
|
||||
};
|
||||
|
||||
Paloma.BaseController.prototype = {
|
||||
|
||||
before: [],
|
||||
|
||||
execute: function(methodName){
|
||||
var callbacks = getCallbacksFor.call(this, methodName);
|
||||
executeCallbacks.call(this, callbacks);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
function getCallbacksFor(methodName){
|
||||
var callbacks = [];
|
||||
|
||||
for (var i = 0, n = this.before.length; i < n; i++){
|
||||
var entry = parseEntry( this.before[i] );
|
||||
|
||||
if ( entry.methods.indexOf(methodName) != -1 )
|
||||
callbacks = callbacks.concat(entry.callbacks);
|
||||
}
|
||||
|
||||
return callbacks;
|
||||
}
|
||||
|
||||
function parseEntry(beforeEntry){
|
||||
var parts = beforeEntry.split('->'),
|
||||
data = {methods: [], callbacks: []};
|
||||
|
||||
if (parts[0]) data.methods = parts[0].trim().split(' ');
|
||||
if (parts[1]) data.callbacks = parts[1].trim().split(' ');
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
function executeCallbacks(callbacks){
|
||||
for (var i = 0, n = callbacks.length; i < n; i++){
|
||||
var name = callbacks[i],
|
||||
callback = this[name];
|
||||
|
||||
callback.call(this);
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
||||
Paloma.BaseController.prototype = {
|
||||
before: []
|
||||
};
|
||||
|
||||
|
|
4
vendor/assets/javascripts/paloma/engine.js
vendored
4
vendor/assets/javascripts/paloma/engine.js
vendored
|
@ -43,7 +43,9 @@ Paloma.Engine.prototype = {
|
|||
var action = controller[ this._request.action ];
|
||||
|
||||
if (action){
|
||||
controller.execute( this._request.action );
|
||||
var agent = Paloma.Agent(controller);
|
||||
agent.perform( this._request.action );
|
||||
|
||||
this._lastRequest.executed = true;
|
||||
}
|
||||
},
|
||||
|
|
1
vendor/assets/javascripts/paloma/index.js
vendored
1
vendor/assets/javascripts/paloma/index.js
vendored
|
@ -1,5 +1,6 @@
|
|||
//= require ./init.js
|
||||
//= require ./base_controller.js
|
||||
//= require ./controller_builder.js
|
||||
//= require ./agent.js
|
||||
//= require ./engine.js
|
||||
//= require ./paloma.js
|
||||
|
|
Loading…
Add table
Reference in a new issue