mirror of
https://github.com/kbparagua/paloma
synced 2023-03-27 23:21:17 -04:00
Remove Paloma.Router js
This commit is contained in:
parent
0a5f180e8f
commit
23e342f5bf
7 changed files with 10 additions and 114 deletions
|
@ -10,7 +10,7 @@ feature 'executing Paloma controller', :js => true do
|
||||||
|
|
||||||
|
|
||||||
context 'default behavior' do
|
context 'default behavior' do
|
||||||
it 'executes the same namespace/controller/action' do
|
it 'executes the same namespace/controller#action' do
|
||||||
visit admin_foos_path
|
visit admin_foos_path
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
|
|
||||||
describe('Paloma.ControllerFactory', function(){
|
describe('Paloma.ControllerFactory', function(){
|
||||||
|
|
||||||
var router = new Paloma.Router({namespaceDelimiter: '/'});
|
|
||||||
|
|
||||||
|
|
||||||
describe('#make(name)', function(){
|
describe('#make(name)', function(){
|
||||||
var factory = new Paloma.ControllerFactory(router),
|
var factory = new Paloma.ControllerFactory(),
|
||||||
Controller;
|
Controller;
|
||||||
|
|
||||||
beforeEach(function(){
|
beforeEach(function(){
|
||||||
|
@ -27,7 +24,7 @@ describe('Paloma.ControllerFactory', function(){
|
||||||
|
|
||||||
|
|
||||||
describe('#get(name)', function(){
|
describe('#get(name)', function(){
|
||||||
var factory = new Paloma.ControllerFactory(router),
|
var factory = new Paloma.ControllerFactory(),
|
||||||
Controller = factory.make('Foo');
|
Controller = factory.make('Foo');
|
||||||
|
|
||||||
describe('when controller exists', function(){
|
describe('when controller exists', function(){
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
|
|
||||||
describe('Paloma.Router', function(){
|
|
||||||
var delimiter = '/',
|
|
||||||
router = new Paloma.Router({namespaceDelimiter: delimiter});
|
|
||||||
|
|
||||||
describe('#parse(path)', function(){
|
|
||||||
|
|
||||||
describe('when path has a namespace', function(){
|
|
||||||
var result;
|
|
||||||
|
|
||||||
beforeEach(function(){
|
|
||||||
result = router.parse('Foo/Bar/Baz/Controller');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('returns the array of the namespaces', function(){
|
|
||||||
expect(result.namespaces).toEqual(['Foo', 'Bar', 'Baz']);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('returns the controller', function(){
|
|
||||||
expect(result.controller).toEqual('Controller');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('returns the controllerPath', function(){
|
|
||||||
expect(result.controllerPath).toEqual(['Foo', 'Bar', 'Baz', 'Controller']);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
describe('when path has no namespace', function(){
|
|
||||||
var result;
|
|
||||||
|
|
||||||
beforeEach(function(){
|
|
||||||
result = router.parse('Controller');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('returns an empty array of namespaces', function(){
|
|
||||||
expect(result.namespaces).toEqual([]);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('returns the controller', function(){
|
|
||||||
expect(result.controller).toEqual('Controller');
|
|
||||||
});
|
|
||||||
|
|
||||||
it('returns the controllerPath', function(){
|
|
||||||
expect(result.controllerPath).toEqual(['Controller']);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
|
@ -1,36 +1,16 @@
|
||||||
Paloma.ControllerFactory = function(router){
|
Paloma.ControllerFactory = function(){
|
||||||
this.instances = {};
|
this._controllers = {};
|
||||||
this.router = router;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Paloma.ControllerFactory.prototype = {
|
Paloma.ControllerFactory.prototype = {
|
||||||
|
|
||||||
make: function(name){
|
make: function(name){
|
||||||
var config = this.router.parse(name),
|
this._controllers[name] = this._createConstructor();
|
||||||
scope = this.instances;
|
return this.get(name);
|
||||||
|
|
||||||
// Create namespaces.
|
|
||||||
for (var i = 0, n = config['namespaces'].length; i < n; i++){
|
|
||||||
var namespace = config['namespaces'][i];
|
|
||||||
scope[namespace] = scope[namespace] || {};
|
|
||||||
scope = scope[namespace];
|
|
||||||
}
|
|
||||||
|
|
||||||
return scope[config['controller']] = this._createConstructor();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
get: function(name){
|
get: function(name){
|
||||||
var config = this.router.parse(name),
|
return this._controllers[name] || null;
|
||||||
scope = this.instances;
|
|
||||||
|
|
||||||
for (var i = 0, n = config['controllerPath'].length; i < n; i++){
|
|
||||||
var path = config['controllerPath'][i];
|
|
||||||
|
|
||||||
if (scope[path] != null){ scope = scope[path]; }
|
|
||||||
else { return null; }
|
|
||||||
}
|
|
||||||
|
|
||||||
return scope;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_createConstructor: function(){
|
_createConstructor: function(){
|
||||||
|
|
3
vendor/assets/javascripts/paloma/index.js
vendored
3
vendor/assets/javascripts/paloma/index.js
vendored
|
@ -1,6 +1,5 @@
|
||||||
//= require ./init.js
|
//= require ./init.js
|
||||||
//= require ./router.js
|
|
||||||
//= require ./controller.js
|
//= require ./controller.js
|
||||||
//= require ./controller_factory.js
|
//= require ./controller_factory.js
|
||||||
//= require ./engine.js
|
//= require ./engine.js
|
||||||
//= require ./paloma.js
|
//= require ./paloma.js
|
||||||
|
|
3
vendor/assets/javascripts/paloma/paloma.js
vendored
3
vendor/assets/javascripts/paloma/paloma.js
vendored
|
@ -1,7 +1,6 @@
|
||||||
(function(Paloma){
|
(function(Paloma){
|
||||||
|
|
||||||
Paloma._router = new Paloma.Router({namespaceDelimiter: '/'});
|
Paloma._controllerFactory = new Paloma.ControllerFactory();
|
||||||
Paloma._controllerFactory = new Paloma.ControllerFactory(Paloma._router);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Declare Paloma controllers using this method.
|
// Declare Paloma controllers using this method.
|
||||||
|
|
27
vendor/assets/javascripts/paloma/router.js
vendored
27
vendor/assets/javascripts/paloma/router.js
vendored
|
@ -1,27 +0,0 @@
|
||||||
Paloma.Router = function(options){
|
|
||||||
options = options || {};
|
|
||||||
this.namespaceDelimiter = options.namespaceDelimiter;
|
|
||||||
|
|
||||||
if (!this.namespaceDelimiter)
|
|
||||||
throw "Paloma.Router: namespaceDelimiter option is required.";
|
|
||||||
};
|
|
||||||
|
|
||||||
Paloma.Router.prototype = {
|
|
||||||
|
|
||||||
parse: function(path){
|
|
||||||
var parts = path.split(this.namespaceDelimiter),
|
|
||||||
controller = parts.pop(),
|
|
||||||
namespaces = parts;
|
|
||||||
|
|
||||||
var controllerPath = namespaces.concat([controller]);
|
|
||||||
|
|
||||||
return {
|
|
||||||
controllerPath: controllerPath,
|
|
||||||
namespaces: namespaces,
|
|
||||||
controller: controller
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue