ajaxify_rails 0.1.1 → 0.1.2

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.
data/README.md CHANGED
@@ -17,6 +17,8 @@ Features:
17
17
 
18
18
  Demo: http://ajaxify-demo.herokuapp.com/ (the first page load might take a while, as heroku needs to spin up a dyno)
19
19
 
20
+ Demo source: https://github.com/ncri/ajaxify_rails_demo_app
21
+
20
22
  Blog Post: http://rubyandrails.posterous.com/introducing-the-ajaxify-rails-gem
21
23
 
22
24
  Inspired by the pjax_rails gem (https://github.com/rails/pjax_rails).
@@ -49,7 +51,6 @@ work most effectively.
49
51
  The later you call `init()`, the later potential redirects from one scheme to another are performed,
50
52
  which means the more unnecessary work the browser has to do.
51
53
 
52
-
53
54
  ### Content Area
54
55
 
55
56
  Ajaxify assumes that your app has a content container html tag with the id `main`.
@@ -59,9 +60,14 @@ If yield doesn't have a wrapper in your app yet, you need to supply one to get a
59
60
  #main
60
61
  = yield
61
62
 
62
- You can change the content wrapper in your javascript by setting
63
+ You can set the content container of your app when initializing Ajaxify:
64
+
65
+ Ajaxify.init
66
+ content_container: 'content_container_id'
63
67
 
64
- Ajaxify.content_container = 'content_container_id'
68
+ or later using `set_content_container`:
69
+
70
+ Ajaxify.set_content_container('content_container_id')
65
71
 
66
72
 
67
73
  ### Loader Animation
@@ -81,18 +87,20 @@ use it to automatically update the title tag after the main content has changed.
81
87
 
82
88
  It's a common use case to have a navigation that needs to change its appearence and possibly functioning when the user navigates
83
89
  to a different section of the page. Ajaxify provides a success callback that is triggered after successful
84
- updates of the page's main content. Just hook into it in your javascript and make your layout changes:
90
+ updates of the page's main content. Just bind to the `ajaxify:content_loaded' event and make your layout changes:
85
91
 
86
- Ajaxify.success ->
92
+ $('body').on 'ajaxify:content_loaded', ->
87
93
  # update navigation and/or other layout elements
88
94
 
89
95
 
90
96
  ### Flash Messages
91
97
 
92
98
  Ajaxify correctly displays your flash messages after ajaxified requests.
93
- By default, only `flash[:notice]` is supported. If you are using for example `flash[:warning]` as well you have to set:
99
+ By default, only `flash[:notice]` is supported. If you are using for example `flash[:warning]` as well you have to add the flash_types
100
+ option to the `Ajaxify.init()` call:
94
101
 
95
- Ajaxify.flash_types = ['notice', 'warning']
102
+ Ajaxify.init
103
+ flash_types: ['notice', 'warning']
96
104
 
97
105
  Also make sure that you supply invisible wrapper tags in your layout for each flash type you use, with the id set to the type, e.g.:
98
106
 
@@ -124,7 +132,8 @@ paths.
124
132
  Example: if your app's root url potentially redirects to `your_domain.com/en/` and `your_domain.com/de/`
125
133
  you need to hint Ajaxyfiy like this:
126
134
 
127
- Ajaxify.base_paths = ['de', 'en']
135
+ Ajaxify.init
136
+ base_paths = ['de', 'en']
128
137
 
129
138
  Important: `Ajaxify.base_paths` need to be set before `Ajaxify.init()` is called!
130
139
 
@@ -146,9 +155,9 @@ For example you could provide url for a widget in the layout like this:
146
155
  "<div id='my_fancy_widget_html'> some html </div>"
147
156
  end
148
157
 
149
- And then, on the client side hook into Ajaxify using the `handle_extra_content` callback and select the widget html via `#ajaxify_content`:
158
+ And then, on the client side bind to the `ajaxify:content_inserted` event and select the widget html via `#ajaxify_content`:
150
159
 
151
- Ajaxify.handle_extra_content = ->
160
+ $('body').on 'ajaxify:content_inserted', ->
152
161
  $('#my_fancy_widget').html $('#ajaxify_content #my_fancy_widget_html').html()
153
162
 
154
163
  Tip: you can call view helpers to render extra content from within your controller using the view_context:
@@ -157,27 +166,25 @@ Tip: you can call view helpers to render extra content from within your controll
157
166
  view_context.my_fancy_widget
158
167
  end
159
168
 
160
- ### Reference: All Javascript Options and Callbacks
169
+ ### Ajaxify Events
170
+
171
+ Ajaxify provides a few jQuery events you can bind to:
172
+
173
+ * `ajaxify:before_load` => Triggered before the ajaxify request is started. Params: `url`.
174
+ * `ajaxify:content_loaded` => Triggered after an ajaxify request finished successfully. Params: `data, status, jqXHR, url`.
175
+ * `ajaxify:content_inserted` => Triggered after an ajaxify request finished but before extra content is stripped from the response.
176
+ * `ajaxify:flash_displayed` => Triggered after a flash message is displayed. Parameters: `flash_type`.
161
177
 
162
- Here is a reference of all options and callbacks you can set on the client side via Ajaxify.<i>option_or_callback</i> = :
163
178
 
164
- Option/Callback Default Description
179
+ ### Javascript
165
180
 
166
- active true Switches Ajaxify on or off. Needs to be set before Ajaxify.init().
167
- content_container 'main' Id of the container to insert the main content into ("yield wrapper").
168
- base_paths null Base path segments for applications with root url redirects.
169
- Needs to be set before Ajaxify.init().
181
+ Put your javascript into an `ajaxify:content_loaded` event handler, to make sure it is executed after content has
182
+ loaded via Ajaxify. You can't use dom ready for example as that only gets triggered for full page relaods.
170
183
 
171
- on_before_load null Callback: Called before the ajaxify request is started.
172
- on_success null Callback: Called when an ajaxify requests finished successfully.
173
- on_success_once null Callback: Like on_success but only called once.
174
- handle_extra_content null Callback: Called before extra content is stripped from the Ajax request's response.
175
184
 
176
- flash_types ['notice'] Flash types your Rails app uses. E.g. ['notice', 'warning', 'error']
177
- flash_effect null Callback: Called for each flash type after flash is set.
178
- clear_flash_effect null Callback: Called for each flash type whenever flash message is not present
185
+ ### Toggle Ajaxify
179
186
 
180
- Also check the example app source code for usage: https://github.com/ncri/ajaxify_rails_demo_app
187
+ You can temporarily deactivate Ajaxify by calling `Ajaxify.activate(false)`. You can switch it on again with `Ajaxify.activate()`.
181
188
 
182
189
 
183
190
  ## Contributing
@@ -1,3 +1,3 @@
1
1
  module AjaxifyRails
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -1,291 +1,276 @@
1
- @Ajaxify =
2
1
 
3
- # options
4
- #
5
- active: true
6
- content_container: 'main'
7
- handle_extra_content: null
8
- base_paths: null
2
+ active = true
3
+ content_container = 'main'
4
+ base_paths = null
5
+ flash_types = ['notice']
9
6
 
10
- # callbacks
11
- #
12
- on_before_load: null
13
- on_success: null
14
- on_success_once: null
7
+ ignore_hash_change = null
8
+ load_page_from_hash = null
15
9
 
16
- # flash
17
- #
18
- flash_types: ['notice']
19
- flash_effect: null
20
- clear_flash_effect: null
10
+ initial_history_state =
11
+ url: window.location.href
12
+ data:
13
+ ajaxified: true
21
14
 
22
- # internal use only
23
- #
24
- ignore_hash_change: null
25
- load_page_from_hash: null
26
15
 
27
- initial_history_state:
28
- url: window.location.href
29
- data:
30
- ajaxified: true
16
+ activate = (new_active = true) ->
17
+ active = new_active
31
18
 
19
+ get_content_container = ->
20
+ content_container
32
21
 
33
- ajaxify: ->
22
+ set_content_container = (new_content_container) ->
23
+ content_container = new_content_container
34
24
 
35
- if this.active
36
25
 
37
- if this.load_page_from_hash
38
- this.load_page_from_hash = false
39
- this.on_hash_change()
26
+ ajaxify = ->
40
27
 
41
- self = this
28
+ if active
42
29
 
43
- protocol_and_hostname = "#{window.location.protocol}//#{window.location.hostname}"
30
+ if load_page_from_hash
31
+ load_page_from_hash = false
32
+ on_hash_change()
44
33
 
45
- $('body').on 'click', "a[href^='/']:not(.no_ajaxify), a[href^='#{protocol_and_hostname}']:not(.no_ajaxify)", ->
34
+ protocol_and_hostname = "#{window.location.protocol}//#{window.location.hostname}"
46
35
 
47
- $this = $(this)
48
- self.load
49
- url: $this.attr('href')
50
- type: $this.data('method')
51
- confirm: $this.data('confirm')
36
+ $('body').on 'click', "a[href^='/']:not(.no_ajaxify), a[href^='#{protocol_and_hostname}']:not(.no_ajaxify)", ->
52
37
 
53
- false
38
+ $this = $(this)
39
+ load
40
+ url: $this.attr('href')
41
+ type: $this.data('method')
42
+ confirm: $this.data('confirm')
54
43
 
55
- exclude_selector = ":not(.no_ajaxify):not([enctype='multipart/form-data'])"
56
- $('body').on 'submit', "form[action^='/']#{exclude_selector},
57
- form[action^='#{protocol_and_hostname}']#{exclude_selector},
58
- form[action='']#{exclude_selector}", ->
44
+ false
59
45
 
60
- $this = $(this)
61
- form_params = $(this).serialize()
62
- form_params += '&ajaxified=true'
46
+ exclude_selector = ":not(.no_ajaxify):not([enctype='multipart/form-data'])"
47
+ $('body').on 'submit', "form[action^='/']#{exclude_selector},
48
+ form[action^='#{protocol_and_hostname}']#{exclude_selector},
49
+ form[action='']#{exclude_selector}", ->
63
50
 
64
- action = $this.attr('action')
51
+ $this = $(this)
52
+ form_params = $(this).serialize()
53
+ form_params += '&ajaxified=true'
65
54
 
66
- self.load
67
- url: if action != '' then action else '/'
68
- data: form_params
69
- type: $this.attr('method')
70
- confirm: $this.data('confirm')
55
+ action = $this.attr('action')
71
56
 
72
- false
57
+ load
58
+ url: if action != '' then action else '/'
59
+ data: form_params
60
+ type: $this.attr('method')
61
+ confirm: $this.data('confirm')
73
62
 
63
+ false
74
64
 
75
- # (history interface browsers only)
76
- window.onpopstate = (e) ->
77
- if e.state
78
- e.state.cache = false
79
- self.load e.state, true
80
65
 
66
+ # (history interface browsers only)
67
+ window.onpopstate = (e) ->
68
+ if e.state
69
+ e.state.cache = false
70
+ load e.state, true
81
71
 
82
- # (non history interface browsers only)
83
- window.onhashchange = ->
84
- unless self.ignore_hash_change
85
- self.on_hash_change()
86
- else
87
- self.ignore_hash_change = false
88
72
 
73
+ # (non history interface browsers only)
74
+ window.onhashchange = ->
75
+ unless ignore_hash_change
76
+ on_hash_change()
77
+ else
78
+ ignore_hash_change = false
89
79
 
90
- # load content from url hash (non history interface browsers)
91
- on_hash_change: ->
92
- url = window.location.hash.replace(/#/, "")
93
80
 
94
- base_path_regexp = this.base_path_regexp()
95
- if match = window.location.pathname.match(base_path_regexp)
96
- url = match[0] + url
81
+ # load content from url hash (non history interface browsers)
82
+ on_hash_change = ->
83
+ url = window.location.hash.replace(/#/, "")
97
84
 
98
- url = '/' if url == ''
99
- this.hash_changed = true
100
- this.load
101
- url: url
102
- , true
85
+ base_path_regexp = base_path_regexp()
86
+ if match = window.location.pathname.match(base_path_regexp)
87
+ url = match[0] + url
103
88
 
89
+ url = '/' if url == ''
90
+ hash_changed = true
104
91
 
105
- load: (options, pop_state = false) ->
92
+ load
93
+ url: url
94
+ , true
106
95
 
107
- unless this.load_page_from_hash
108
- self = this
109
96
 
110
- data = options.data || { ajaxified: true }
97
+ load = (options, pop_state = false) ->
111
98
 
112
- if options.type and options.type == 'delete'
113
- type = 'post'
114
- if self.is_string(data)
115
- data += '&_method=delete'
116
- else
117
- data._method = 'delete'
99
+ unless load_page_from_hash
100
+
101
+ data = options.data || { ajaxified: true }
102
+
103
+ if options.type and options.type == 'delete'
104
+ type = 'post'
105
+ if is_string(data)
106
+ data += '&_method=delete'
118
107
  else
119
- type = options.type or 'get'
108
+ data._method = 'delete'
109
+ else
110
+ type = options.type or 'get'
120
111
 
121
- if options.confirm
122
- return false unless confirm options.confirm
112
+ if options.confirm
113
+ return false unless confirm options.confirm
123
114
 
124
- if self.on_before_load
125
- self.on_before_load options.url
115
+ $('body').trigger 'ajaxify:before_load', [options.url]
126
116
 
127
- $.ajax
128
- url: options.url
129
- dataType: 'html'
130
- data: data
131
- type: type
132
- cache: true
133
- beforeSend: (xhr) ->
134
- $("##{self.content_container}").html( "<div class='ajaxify_loader'></div>" )
135
- $('html, body').animate
136
- scrollTop:0
137
- , 500
138
-
139
- success: (data, status, jqXHR) ->
140
- self.on_ajaxify_success data, status, jqXHR, pop_state, options
141
-
142
-
143
- show_flashes: (flashes) ->
144
- self = this
145
- $.each this.flash_types, ->
146
- if flashes and flashes[this]
147
- $("##{this}").html flashes[this]
148
- $("##{this}").show()
149
- if self.flash_effect
150
- if self.clear_flash_effect
151
- self.clear_flash_effect this
152
- self.flash_effect this
153
- else
154
- $("##{this}").hide()
117
+ $.ajax
118
+ url: options.url
119
+ dataType: 'html'
120
+ data: data
121
+ type: type
122
+ cache: true
123
+ beforeSend: (xhr) ->
124
+ $("##{content_container}").html( "<div class='ajaxify_loader'></div>" )
125
+ $('html, body').animate
126
+ scrollTop:0
127
+ , 500
155
128
 
129
+ success: (data, status, jqXHR) ->
130
+ on_ajaxify_success data, status, jqXHR, pop_state, options
156
131
 
157
- on_ajaxify_success: (data, status, jqXHR, pop_state, options) ->
158
132
 
159
- $("##{this.content_container}").html data
133
+ show_flashes = (flashes) ->
134
+ $.each flash_types, ->
135
+ if flashes and flashes[this]
136
+ $("##{this}").html flashes[this]
137
+ $("##{this}").show()
138
+ $('body').trigger 'ajaxify:flash_displayed', [this]
160
139
 
161
- title = $('#ajaxify_content').data('page-title')
162
- flashes = $('#ajaxify_content').data('flashes')
140
+ else
141
+ $("##{this}").hide()
163
142
 
164
- # Correct the url after a redirect and when it has the ajaxify param in it.
165
- # The latter can happen e.g. for pagination links that are auto generated.
166
- current_url = $('#ajaxify_content #ajaxify_location').html()
167
- if options.url != current_url
168
- options.url = current_url.replace(/(&|&amp;|\?)ajaxify_redirect=true/,'')
169
- options.type = 'GET'
170
143
 
171
- this.update_url options, pop_state
144
+ on_ajaxify_success = (data, status, jqXHR, pop_state, options) ->
172
145
 
173
- if this.handle_extra_content
174
- this.handle_extra_content()
146
+ $("##{content_container}").html data
175
147
 
176
- $("##{this.content_container} #ajaxify_content").remove()
148
+ title = $('#ajaxify_content').data('page-title')
149
+ flashes = $('#ajaxify_content').data('flashes')
177
150
 
178
- if title
179
- document.title = title.replace /&amp;/, '&' # Todo: need to figure out what else needs to be unescaped
151
+ # Correct the url after a redirect and when it has the ajaxify param in it.
152
+ # The latter can happen e.g. for pagination links that are auto generated.
153
+ current_url = $('#ajaxify_content #ajaxify_location').html()
154
+ if options.url != current_url
155
+ options.url = current_url.replace(/(&|&amp;|\?)ajaxify_redirect=true/,'')
156
+ options.type = 'GET'
180
157
 
181
- this.show_flashes(flashes)
158
+ update_url options, pop_state
182
159
 
183
- if this.on_success
184
- this.on_success( data, status, jqXHR, options.url )
160
+ $('body').trigger 'ajaxify:content_inserted'
185
161
 
186
- if this.on_success_once
187
- this.on_success_once( data, status, jqXHR )
188
- this.on_success_once = null
162
+ $("##{content_container} #ajaxify_content").remove()
189
163
 
164
+ if title
165
+ document.title = title.replace /&amp;/, '&' # Todo: need to figure out what else needs to be unescaped
190
166
 
191
- update_url: (options, pop_state = false) ->
167
+ show_flashes(flashes)
192
168
 
193
- get_request = (!options.type or options.type.toLowerCase() == 'get')
169
+ $('body').trigger('ajaxify:content_loaded', [data, status, jqXHR, options.url])
194
170
 
195
- # unless back/forward arrowing or request method is not 'get'
196
- if !pop_state and get_request
197
171
 
198
- if window.history.pushState
172
+ update_url = (options, pop_state = false) ->
199
173
 
200
- if this.initial_history_state != ''
201
- window.history.replaceState this.initial_history_state, ''
202
- this.initial_history_state = ''
174
+ get_request = (!options.type or options.type.toLowerCase() == 'get')
203
175
 
204
- window.history.pushState
205
- url: options.url
206
- data: options.data
207
- type: options.type
208
- ,'', options.url
176
+ # unless back/forward arrowing or request method is not 'get'
177
+ if !pop_state and get_request
209
178
 
210
- else
211
- this.ignore_hash_change = true # for non histroy interface browsers: avoids loading the page for hash changes caused by link clicks
212
- hash = "#{options.url.replace(new RegExp(this.protocol_with_host()), '')}"
179
+ if window.history.pushState
213
180
 
214
- base_path_regexp = this.base_path_regexp()
215
- if base_path_regexp
216
- hash = hash.replace(base_path_regexp, '')
217
- hash = "/#{hash}" unless hash == '' or hash.indexOf('/') == 0
181
+ if initial_history_state != ''
182
+ window.history.replaceState initial_history_state, ''
183
+ initial_history_state = ''
218
184
 
219
- window.location.hash = hash
185
+ window.history.pushState
186
+ url: options.url
187
+ data: options.data
188
+ type: options.type
189
+ ,'', options.url
220
190
 
191
+ else
192
+ ignore_hash_change = true # for non histroy interface browsers: avoids loading the page for hash changes caused by link clicks
193
+ hash = "#{options.url.replace(new RegExp(protocol_with_host()), '')}"
221
194
 
222
- base_path_regexp: ->
223
- return null unless this.base_paths
224
- # match starting and ending with base path, e.g. "^\/en$" (i.e. we are at the base path root) or
225
- # starting with base path and continuing with '/', e.g. "^\/en\/" (i.e. we are NOT at the base path root) or
226
- # starting with base path and continuing with '?', e.g. "^\/en\?" (i.e. we are at the base path root and have query params)
227
- self = this
228
- new RegExp("^\/(#{ $.map(this.base_paths, (el) ->
229
- el = self.regexp_escape el
230
- "##{el}($|\/|\\?)"
231
- ).join('|')})", 'i')
195
+ base_path_regexp = base_path_regexp()
196
+ if base_path_regexp
197
+ hash = hash.replace(base_path_regexp, '')
198
+ hash = "/#{hash}" unless hash == '' or hash.indexOf('/') == 0
232
199
 
200
+ window.location.hash = hash
233
201
 
234
- correct_url: ->
235
- if this.active
236
202
 
237
- if window.location.hash.indexOf('#') == 0 # if url has a '#' in it treat it as a non history interface hash based scheme url
203
+ base_path_regexp = ->
204
+ return null unless base_paths
205
+ # match starting and ending with base path, e.g. "^\/en$" (i.e. we are at the base path root) or
206
+ # starting with base path and continuing with '/', e.g. "^\/en\/" (i.e. we are NOT at the base path root) or
207
+ # starting with base path and continuing with '?', e.g. "^\/en\?" (i.e. we are at the base path root and have query params)
208
+ new RegExp("^\/(#{ $.map(base_paths, (el) ->
209
+ el = regexp_escape el
210
+ "##{el}($|\/|\\?)"
211
+ ).join('|')})", 'i')
238
212
 
239
- return unless window.location.hash.match(/^#(\/|\?)/) # check hash format
240
213
 
241
- if !window.history.pushState
242
- Ajaxify.load_page_from_hash = true # notify Ajaxify that a hash will be loaded and ignore all other calls to load until hash url is loaded
243
- else
244
- # load proper url in case browser supports history api
245
- path = window.location.pathname
246
- path = '' if path == '/'
247
- path = path + window.location.hash.replace(/#/, "")
248
- window.location.href = "#{this.protocol_with_host()}#{path}"
249
-
250
- else if !window.history.pushState # move path behind '#' for browsers without history api
251
-
252
- if window.location.pathname == '/'
253
- if window.location.search != ''
254
- window.location.href = "#{this.protocol_with_host()}/#/#{window.location.search}" # move search behind #
255
- return
256
-
257
- base_path_regexp = this.base_path_regexp()
258
- if base_path_regexp and (match = window.location.pathname.match(base_path_regexp))
259
- if match[0] == window.location.pathname
260
- if window.location.search == ''
261
- return # we are on a base path here already, so don't do anything
262
- else
263
- path = match[0].replace(/\?/,'') + '#'
214
+ correct_url = ->
215
+ if active
216
+
217
+ if window.location.hash.indexOf('#') == 0 # if url has a '#' in it treat it as a non history interface hash based scheme url
218
+
219
+ return unless window.location.hash.match(/^#(\/|\?)/) # check hash format
220
+
221
+ if !window.history.pushState
222
+ Ajaxify.load_page_from_hash = true # notify Ajaxify that a hash will be loaded and ignore all other calls to load until hash url is loaded
223
+ else
224
+ # load proper url in case browser supports history api
225
+ path = window.location.pathname
226
+ path = '' if path == '/'
227
+ path = path + window.location.hash.replace(/#/, "")
228
+ window.location.href = "#{protocol_with_host()}#{path}"
229
+
230
+ else if !window.history.pushState # move path behind '#' for browsers without history api
231
+
232
+ if window.location.pathname == '/'
233
+ if window.location.search != ''
234
+ window.location.href = "#{protocol_with_host()}/#/#{window.location.search}" # move search behind #
235
+ return
236
+
237
+ base_path_regexp = base_path_regexp()
238
+ if base_path_regexp and (match = window.location.pathname.match(base_path_regexp))
239
+ if match[0] == window.location.pathname
240
+ if window.location.search == ''
241
+ return # we are on a base path here already, so don't do anything
264
242
  else
265
- path = "#{match[0].replace(/\/$/,'')}#/#{window.location.pathname.replace(match[0],'')}"
243
+ path = match[0].replace(/\?/,'') + '#'
266
244
  else
267
- path = "/##{window.location.pathname}"
245
+ path = "#{match[0].replace(/\/$/,'')}#/#{window.location.pathname.replace(match[0],'')}"
246
+ else
247
+ path = "/##{window.location.pathname}"
268
248
 
269
- window.location.href = "#{this.protocol_with_host()}#{path}#{window.location.search}"
249
+ window.location.href = "#{protocol_with_host()}#{path}#{window.location.search}"
270
250
 
251
+ init = (options = {}) ->
252
+ base_paths = options.base_paths if 'base_paths' of options
253
+ flash_types = options.flash_types if 'flash_types' of options
254
+ active = options.active if 'active' of options
255
+ content_container = options.content_container if 'content_container' of options
256
+ correct_url()
271
257
 
272
- init: ->
273
- this.correct_url()
258
+ #
259
+ # utility functions
260
+ #
274
261
 
262
+ is_string = (variable) ->
263
+ Object.prototype.toString.call(variable) == '[object String]'
275
264
 
276
- #
277
- # utility functions
278
- #
265
+ regexp_escape = (str) ->
266
+ str.replace new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\-]', 'g'), '\\$&'
279
267
 
280
- is_string: (variable) ->
281
- Object.prototype.toString.call(variable) == '[object String]'
268
+ protocol_with_host = ->
269
+ loc = window.location
270
+ "#{loc.protocol}//#{loc.host}"
282
271
 
283
- regexp_escape: (str) ->
284
- str.replace new RegExp('[.\\\\+*?\\[\\^\\]$(){}=!<>|:\\-]', 'g'), '\\$&'
285
272
 
286
- protocol_with_host: ->
287
- loc = window.location
288
- "#{loc.protocol}//#{loc.host}"
273
+ @Ajaxify = { init, ajaxify, load, activate, set_content_container, get_content_container }
289
274
 
290
275
 
291
276
  jQuery ->
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ajaxify_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-05 00:00:00.000000000 Z
12
+ date: 2012-10-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -66,7 +66,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
66
66
  version: '0'
67
67
  segments:
68
68
  - 0
69
- hash: 3508400671122042699
69
+ hash: 2019060543339106194
70
70
  required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  none: false
72
72
  requirements:
@@ -75,7 +75,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
75
  version: '0'
76
76
  segments:
77
77
  - 0
78
- hash: 3508400671122042699
78
+ hash: 2019060543339106194
79
79
  requirements: []
80
80
  rubyforge_project:
81
81
  rubygems_version: 1.8.24