From d1183a91567261184746890a4f41357ce42554f7 Mon Sep 17 00:00:00 2001 From: kbparagua Date: Thu, 21 Feb 2013 23:40:50 +0800 Subject: [PATCH] before,after,around methods accepting dynamic number of arguments --- .../app/assets/javascripts/paloma/foo/_filters.js | 2 +- vendor/assets/javascripts/paloma_core.js | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/spec/test_app/app/assets/javascripts/paloma/foo/_filters.js b/spec/test_app/app/assets/javascripts/paloma/foo/_filters.js index 62629e1..86db51b 100644 --- a/spec/test_app/app/assets/javascripts/paloma/foo/_filters.js +++ b/spec/test_app/app/assets/javascripts/paloma/foo/_filters.js @@ -1,7 +1,7 @@ (function(){ var filter = new Paloma.FilterScope('foo'); filter.as('filter A'). - before('basic action'). + before('basic action', 'callback_from_another_action'). perform(function(params) { window.beforeFilter = 'foo/basic_action'; diff --git a/vendor/assets/javascripts/paloma_core.js b/vendor/assets/javascripts/paloma_core.js index 9c1311e..ad5320a 100644 --- a/vendor/assets/javascripts/paloma_core.js +++ b/vendor/assets/javascripts/paloma_core.js @@ -91,7 +91,7 @@ Paloma.Filter.prototype.perform = function(method){ // Generate filter methods (function(){ var Basic = function(type){ - return function(actions){ return this._setProperties(type, actions); }; + return function(){ return this._setProperties(type, arguments); }; }; var All = function(type){ @@ -99,9 +99,9 @@ Paloma.Filter.prototype.perform = function(method){ }; var Except = function(type){ - return function(actions){ + return function(){ this.exception = true; - return this._setProperties(type, actions); + return this._setProperties(type, arguments); }; }; @@ -133,7 +133,11 @@ Paloma.Filter.prototype._addToFilters = function(){ Paloma.Filter.prototype._setProperties = function(type, actions){ + // if all + if (typeof actions === 'string'){ this.actions = actions; } + // if arguments, convert to array + else { this.actions = Array.prototype.slice.call(actions); } + this.type = type; - this.actions = actions; return this; };