paloma 3.0.2 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,64 +1,23 @@
1
1
  (function(Paloma){
2
2
 
3
-
4
-
5
- var Router = function(config){
6
- this.controllers = {};
7
- this.redirects = {};
8
-
9
- this.delimiters = {};
10
- this.delimiters.namespace = config['namespace'];
11
- this.delimiters.action = config['action'];
3
+ var Router = function(namespaceDelimiter){
4
+ this.namespaceDelimiter = namespaceDelimiter;
12
5
  };
13
6
 
14
7
 
15
8
  Router.prototype.parse = function(path){
16
- var namespaced = path.split(this.delimiters.namespace),
17
- namespaces = namespaced.slice(0, namespaced.length - 1),
18
- controllerPart = namespaced.pop();
19
-
20
- var actioned = controllerPart.split(this.delimiters.action),
21
- controller = actioned[0],
22
- action = actioned.length == 1 ? null : actioned.pop();
9
+ var parts = path.split(this.namespaceDelimiter),
10
+ controller = parts.pop(),
11
+ namespaces = parts;
23
12
 
24
13
  var controllerPath = namespaces.concat([controller]);
25
14
 
26
15
  return {controllerPath: controllerPath,
27
16
  namespaces: namespaces,
28
- controller: controller,
29
- action: action};
30
- };
31
-
32
-
33
- Router.prototype.resource = function(resource, option){
34
- option = option || {};
35
- this.controllers[resource] = option['controller'] || resource;
36
- };
37
-
38
-
39
- Router.prototype.redirect = function(path, option){
40
- option = option || {};
41
- this.redirects[path] = this.parse(option['to'] || path);
17
+ controller: controller};
42
18
  };
43
19
 
44
20
 
45
- Router.prototype.controllerFor = function(resource){
46
- return this.controllers[resource] || resource;
47
- };
48
-
49
-
50
- Router.prototype.redirectFor = function(resource, action){
51
- var path = resource + this.delimiters.action + action,
52
- redirect = this.redirects[path];
53
-
54
- if (!redirect){ return null; }
55
-
56
- return {controller: redirect['controllerPath'].join(this.delimiters.namespace),
57
- action: redirect['action']};
58
- };
59
-
60
-
61
-
62
21
  Paloma.Router = Router;
63
22
 
64
23
  })(window.Paloma);
metadata CHANGED
@@ -1,119 +1,136 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: paloma
3
- version: !ruby/object:Gem::Version
4
- version: 3.0.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 63
5
+ prerelease:
6
+ segments:
7
+ - 4
8
+ - 0
9
+ - 0
10
+ version: 4.0.0
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Karl Paragua
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2013-10-31 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2014-02-15 00:00:00 +08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
14
22
  name: jquery-rails
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ! '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
23
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ! '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
28
36
  name: rails
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: 3.2.0
34
- type: :development
35
37
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
38
41
  - - ~>
39
- - !ruby/object:Gem::Version
42
+ - !ruby/object:Gem::Version
43
+ hash: 15
44
+ segments:
45
+ - 3
46
+ - 2
47
+ - 0
40
48
  version: 3.2.0
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
49
  type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: rake
49
53
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
62
63
  type: :development
64
+ version_requirements: *id003
65
+ - !ruby/object:Gem::Dependency
66
+ name: rspec
63
67
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ! '>='
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rspec-rails
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ~>
74
- - !ruby/object:Gem::Version
75
- version: '2.0'
68
+ requirement: &id004 !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
76
77
  type: :development
78
+ version_requirements: *id004
79
+ - !ruby/object:Gem::Dependency
80
+ name: rspec-rails
77
81
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
82
+ requirement: &id005 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
80
85
  - - ~>
81
- - !ruby/object:Gem::Version
82
- version: '2.0'
83
- - !ruby/object:Gem::Dependency
84
- name: capybara
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ~>
88
- - !ruby/object:Gem::Version
89
- version: '1.0'
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 2
90
+ - 0
91
+ version: "2.0"
90
92
  type: :development
93
+ version_requirements: *id005
94
+ - !ruby/object:Gem::Dependency
95
+ name: capybara
91
96
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
97
+ requirement: &id006 !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
94
100
  - - ~>
95
- - !ruby/object:Gem::Version
96
- version: '1.0'
97
- - !ruby/object:Gem::Dependency
98
- name: jasmine-rails
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ~>
102
- - !ruby/object:Gem::Version
103
- version: 0.4.5
101
+ - !ruby/object:Gem::Version
102
+ hash: 15
103
+ segments:
104
+ - 1
105
+ - 0
106
+ version: "1.0"
104
107
  type: :development
108
+ version_requirements: *id006
109
+ - !ruby/object:Gem::Dependency
110
+ name: jasmine-rails
105
111
  prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
112
+ requirement: &id007 !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
108
115
  - - ~>
109
- - !ruby/object:Gem::Version
116
+ - !ruby/object:Gem::Version
117
+ hash: 5
118
+ segments:
119
+ - 0
120
+ - 4
121
+ - 5
110
122
  version: 0.4.5
123
+ type: :development
124
+ version_requirements: *id007
111
125
  description: Page-specific javascript for Rails done right
112
126
  email: kb.paragua@gmail.com
113
127
  executables: []
128
+
114
129
  extensions: []
130
+
115
131
  extra_rdoc_files: []
116
- files:
132
+
133
+ files:
117
134
  - .gitignore
118
135
  - Changelog.md
119
136
  - Gemfile
@@ -123,7 +140,9 @@ files:
123
140
  - app/views/paloma/_hook.html.erb
124
141
  - lib/paloma.rb
125
142
  - lib/paloma/action_controller_extension.rb
143
+ - lib/paloma/controller.rb
126
144
  - lib/paloma/rails/engine.rb
145
+ - lib/paloma/utilities.rb
127
146
  - paloma.gemspec
128
147
  - test_app/.gitignore
129
148
  - test_app/.rspec
@@ -138,11 +157,9 @@ files:
138
157
  - test_app/app/assets/stylesheets/foo.css
139
158
  - test_app/app/assets/stylesheets/main.css
140
159
  - test_app/app/assets/stylesheets/multiple_names.css
141
- - test_app/app/controllers/admin/bar_controller.rb
160
+ - test_app/app/controllers/admin/foos_controller.rb
142
161
  - test_app/app/controllers/application_controller.rb
143
- - test_app/app/controllers/foo_controller.rb
144
162
  - test_app/app/controllers/main_controller.rb
145
- - test_app/app/controllers/multiple_names_controller.rb
146
163
  - test_app/app/helpers/admin/bar_helper.rb
147
164
  - test_app/app/helpers/application_helper.rb
148
165
  - test_app/app/helpers/foo_helper.rb
@@ -177,11 +194,14 @@ files:
177
194
  - test_app/public/favicon.ico
178
195
  - test_app/public/robots.txt
179
196
  - test_app/script/rails
180
- - test_app/spec/integration/main_spec.rb
197
+ - test_app/spec/integration/advanced_spec.rb
198
+ - test_app/spec/integration/basic_spec.rb
181
199
  - test_app/spec/javascripts/controller_builder_spec.js
182
200
  - test_app/spec/javascripts/router_spec.js
183
201
  - test_app/spec/javascripts/support/jasmine.yml
184
202
  - test_app/spec/spec_helper.rb
203
+ - test_app/spec/units/controller_spec.rb
204
+ - test_app/spec/units/utilities_spec.rb
185
205
  - test_app/test/fixtures/.gitkeep
186
206
  - test_app/test/functional/.gitkeep
187
207
  - test_app/test/integration/.gitkeep
@@ -198,27 +218,39 @@ files:
198
218
  - vendor/assets/javascripts/paloma/init.js
199
219
  - vendor/assets/javascripts/paloma/paloma.js
200
220
  - vendor/assets/javascripts/paloma/router.js
221
+ has_rdoc: true
201
222
  homepage: https://github.com/kbparagua/paloma
202
223
  licenses: []
203
- metadata: {}
224
+
204
225
  post_install_message:
205
226
  rdoc_options: []
206
- require_paths:
227
+
228
+ require_paths:
207
229
  - lib
208
- required_ruby_version: !ruby/object:Gem::Requirement
209
- requirements:
210
- - - ! '>='
211
- - !ruby/object:Gem::Version
212
- version: '0'
213
- required_rubygems_version: !ruby/object:Gem::Requirement
214
- requirements:
215
- - - ! '>='
216
- - !ruby/object:Gem::Version
217
- version: '0'
230
+ required_ruby_version: !ruby/object:Gem::Requirement
231
+ none: false
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ hash: 3
236
+ segments:
237
+ - 0
238
+ version: "0"
239
+ required_rubygems_version: !ruby/object:Gem::Requirement
240
+ none: false
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ hash: 3
245
+ segments:
246
+ - 0
247
+ version: "0"
218
248
  requirements: []
249
+
219
250
  rubyforge_project:
220
- rubygems_version: 2.1.5
251
+ rubygems_version: 1.5.2
221
252
  signing_key:
222
- specification_version: 4
253
+ specification_version: 3
223
254
  summary: Provides an easy way to execute page-specific javascript for Rails.
224
255
  test_files: []
256
+
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZmY5ODBlYWI4YWMwNmI2NDFjZjMwNTUwMWQyYWNkMWVjZjc5MGEyNA==
5
- data.tar.gz: !binary |-
6
- MTM4NDcyOGIxZWFlNzI3NGUwNDBhN2Y5ZTkxNjA4NTVjN2M5MDU5OQ==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- YWM4MmIzMDI3ODI3MGIyNzFhYzAzN2Y4ZDliYzAxZGQxMTk3MjY0ZGQ1YmQ2
10
- ZDU3YWQ0MzM3MTI3ODM5ZWI0ZGZmYWQ2M2JjNTQ4MWEyZjEwOTMyNDU2NTMx
11
- ZDhmZDg4ZTkzZWI2OGQ4ZTY4NjhkM2I3ZGU4ODc5YmI3MTM2MGU=
12
- data.tar.gz: !binary |-
13
- NDFkN2RjMzk3MWRkZDhiNjI4NmY0MWNjZGQwMmQ1MTk4NThkYjUwNjJkNzNm
14
- NDQ5NTUwMDFhZTNkZjg0NzI3ZTM3MGQzMzIzMGNiZmFkODE2MTI3NDNlODAx
15
- NTllMDVlODA0YWZhYmM5ZmUzNjA0MzYyYjRlZDMwNTA2MjlkYzc=
@@ -1,7 +0,0 @@
1
- class Admin::BarController < ApplicationController
2
-
3
- def show
4
- render :inline => 'Admin/Bar#show', :layout => 'application'
5
- end
6
-
7
- end
@@ -1,19 +0,0 @@
1
- class FooController < ApplicationController
2
-
3
- def index
4
- redirect_to main_index_path
5
- end
6
-
7
-
8
- def show
9
- js :parameter => 'Parameter From Paloma'
10
- render :inline => '<h1>Foo#show</h1>', :layout => 'application'
11
- end
12
-
13
-
14
- def edit
15
- js false
16
- render :inline => 'Foo#edit', :layout => 'application'
17
- end
18
-
19
- end
@@ -1,7 +0,0 @@
1
- class MultipleNamesController < ApplicationController
2
-
3
- def index
4
- render :inline => 'MultipleName#index', :layout => 'application'
5
- end
6
-
7
- end
@@ -1,108 +0,0 @@
1
- require 'spec_helper'
2
-
3
-
4
- feature 'executing Paloma controller', :js => true do
5
-
6
- describe 'after rendering' do
7
-
8
- it 'executes the corresponding Paloma controller action' do
9
- visit foo_path(1)
10
- called = page.evaluate_script 'window.called'
11
-
12
- expect(called).to include 'MyFoo#show'
13
- end
14
-
15
-
16
- context 'coming from a redirect' do
17
- before { visit foo_index_path }
18
-
19
- it 'executes first the Paloma action of the first Rails action' do
20
- first = page.evaluate_script 'window.called[0]'
21
- expect(first).to eq 'MyFoo#index'
22
- end
23
-
24
- it 'executes next the Paloma action of the last Rails action' do
25
- last = page.evaluate_script 'window.called.pop()'
26
- expect(last).to eq 'Main#index'
27
- end
28
- end
29
-
30
-
31
- context 'when js params is passed' do
32
- it 'passes the parameters to Paloma controller action' do
33
- visit foo_path(1)
34
- parameter = page.evaluate_script 'window.parameter'
35
-
36
- expect(parameter).to eq 'Parameter From Paloma'
37
- end
38
- end
39
-
40
-
41
- context 'from namespaced controller' do
42
- it 'executes the corresponding Paloma controller action' do
43
- visit admin_bar_path(1)
44
- called = page.evaluate_script 'window.called.pop()'
45
-
46
- expect(called).to eq 'Admin/Bar#show'
47
- end
48
- end
49
-
50
-
51
- context 'when js(false) is triggered' do
52
- it 'does not append paloma hook' do
53
- visit edit_foo_path(1)
54
-
55
- page.should_not have_selector '.js-paloma-hook'
56
- end
57
- end
58
-
59
-
60
- context 'when requests from a controller with multiple name' do
61
- it 'executes the corresponding Paloma action' do
62
- visit multiple_names_path
63
-
64
- called = page.evaluate_script 'window.called.pop()'
65
-
66
- expect(called).to eq 'MultipleNames#index'
67
- end
68
- end
69
-
70
-
71
- #
72
- # [TODO]
73
- # Create proper test for the following:
74
- #
75
-
76
- context 'when rendering json' do
77
- it 'does not execute Paloma' do
78
- visit json_response_main_path 1
79
- page.should_not have_selector '.js-paloma-hook'
80
- end
81
- end
82
-
83
-
84
- context 'when rendering js' do
85
- it 'does not execute Paloma' do
86
- visit js_response_main_path 1
87
- page.should_not have_selector '.js-paloma-hook'
88
- end
89
- end
90
-
91
-
92
- context 'when rendering xml' do
93
- it 'does not execute Paloma' do
94
- visit xml_response_main_path 1
95
- page.should_not have_selector '.js-paloma-hook'
96
- end
97
- end
98
-
99
-
100
- context 'when rendering a file' do
101
- it 'does not execute Paloma' do
102
- visit file_response_main_path 1
103
- page.should_not have_selector '.js-paloma-hook'
104
- end
105
- end
106
- end
107
-
108
- end