crossroadsjs-rails 1.0.0 → 1.1.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.
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
- /Gemfile.lock
1
+ /Gemfile.lock
2
+ *.gem
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Crossroads.js for Rails ![Build Status][travis_ci_build_status]
2
2
 
3
- Provides Crossroads.js (0.7.1) for use with Rails 3
3
+ Provides Crossroads.js (0.8.0) for use with Rails 3
4
4
 
5
5
  [RubyGems][ruby_gems] | [Ruby Toolbox][ruby_toolbox] | [GitHub][github] | [Travis CI][travis_ci] | [RubyDoc][ruby_doc]
6
6
 
@@ -1,6 +1,6 @@
1
1
  module Crossroadsjs
2
2
  module Rails
3
- VERSION = "1.0.0"
4
- CROSSROADSJS_VERSION = "0.7.1";
3
+ VERSION = "1.1.0"
4
+ CROSSROADSJS_VERSION = "0.8.0";
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Crossroadsjs::Rails do
4
- it { Crossroadsjs::Rails::VERSION.should == "1.0.0" }
5
- it { Crossroadsjs::Rails::CROSSROADSJS_VERSION.should == "0.7.1" }
4
+ it { Crossroadsjs::Rails::VERSION.should == "1.1.0" }
5
+ it { Crossroadsjs::Rails::CROSSROADSJS_VERSION.should == "0.8.0" }
6
6
  end
@@ -1,15 +1,14 @@
1
1
  /** @license
2
- * Crossroads.js <http://millermedeiros.github.com/crossroads.js>
3
- * Released under the MIT license
2
+ * crossroads <http://millermedeiros.github.com/crossroads.js/>
3
+ * License: MIT
4
4
  * Author: Miller Medeiros
5
- * Version: 0.7.1 - Build: 93 (2012/02/02 09:29 AM)
5
+ * Version: 0.8.0 (2012/3/5 14:26)
6
6
  */
7
7
 
8
8
  (function (define) {
9
9
  define(['signals'], function (signals) {
10
10
 
11
11
  var crossroads,
12
- patternLexer,
13
12
  UNDEF;
14
13
 
15
14
  // Helpers -----------
@@ -85,6 +84,7 @@ define(['signals'], function (signals) {
85
84
  */
86
85
  function Crossroads() {
87
86
  this._routes = [];
87
+ this._prevRoutes = [];
88
88
  this.bypassed = new signals.Signal();
89
89
  this.routed = new signals.Signal();
90
90
  }
@@ -121,8 +121,9 @@ define(['signals'], function (signals) {
121
121
  this._routes.length = 0;
122
122
  },
123
123
 
124
- parse : function (request) {
124
+ parse : function (request, defaultArgs) {
125
125
  request = request || '';
126
+ defaultArgs = defaultArgs || [];
126
127
 
127
128
  var routes = this._getMatchedRoutes(request),
128
129
  i = 0,
@@ -130,16 +131,26 @@ define(['signals'], function (signals) {
130
131
  cur;
131
132
 
132
133
  if (n) {
134
+ this._notifyPrevRoutes(request);
135
+ this._prevRoutes = routes;
133
136
  //shold be incremental loop, execute routes in order
134
137
  while (i < n) {
135
138
  cur = routes[i];
136
- cur.route.matched.dispatch.apply(cur.route.matched, cur.params);
139
+ cur.route.matched.dispatch.apply(cur.route.matched, defaultArgs.concat(cur.params));
137
140
  cur.isFirst = !i;
138
- this.routed.dispatch(request, cur);
141
+ this.routed.dispatch.apply(this.routed, defaultArgs.concat([request, cur]));
139
142
  i += 1;
140
143
  }
141
144
  } else {
142
- this.bypassed.dispatch(request);
145
+ this.bypassed.dispatch.apply(this.bypassed, defaultArgs.concat([request]));
146
+ }
147
+ },
148
+
149
+ _notifyPrevRoutes : function(request) {
150
+ var i = 0, cur;
151
+ while (cur = this._prevRoutes[i++]) {
152
+ //check if switched exist since route may be disposed
153
+ if(cur.route.switched) cur.route.switched.dispatch(request);
143
154
  }
144
155
  },
145
156
 
@@ -179,8 +190,15 @@ define(['signals'], function (signals) {
179
190
 
180
191
  //"static" instance
181
192
  crossroads = new Crossroads();
182
- crossroads.VERSION = '0.7.1';
193
+ crossroads.VERSION = '0.8.0';
183
194
 
195
+ crossroads.NORM_AS_ARRAY = function (req, vals) {
196
+ return [vals.vals_];
197
+ };
198
+
199
+ crossroads.NORM_AS_OBJECT = function (req, vals) {
200
+ return [vals];
201
+ };
184
202
 
185
203
 
186
204
  // Route --------------
@@ -190,13 +208,15 @@ define(['signals'], function (signals) {
190
208
  * @constructor
191
209
  */
192
210
  function Route(pattern, callback, priority, router) {
193
- var isRegexPattern = isRegExp(pattern);
211
+ var isRegexPattern = isRegExp(pattern),
212
+ patternLexer = crossroads.patternLexer;
194
213
  this._router = router;
195
214
  this._pattern = pattern;
196
215
  this._paramsIds = isRegexPattern? null : patternLexer.getParamIds(this._pattern);
197
216
  this._optionalParamsIds = isRegexPattern? null : patternLexer.getOptionalParamsIds(this._pattern);
198
217
  this._matchRegexp = isRegexPattern? pattern : patternLexer.compilePattern(pattern);
199
218
  this.matched = new signals.Signal();
219
+ this.switched = new signals.Signal();
200
220
  if (callback) {
201
221
  this.matched.add(callback);
202
222
  }
@@ -249,7 +269,7 @@ define(['signals'], function (signals) {
249
269
 
250
270
  _getParamsObject : function (request) {
251
271
  var shouldTypecast = this._router.shouldTypecast,
252
- values = patternLexer.getParamValues(request, this._matchRegexp, shouldTypecast),
272
+ values = crossroads.patternLexer.getParamValues(request, this._matchRegexp, shouldTypecast),
253
273
  o = {},
254
274
  n = values.length;
255
275
  while (n--) {
@@ -270,7 +290,7 @@ define(['signals'], function (signals) {
270
290
  if (norm && isFunction(norm)) {
271
291
  params = norm(request, this._getParamsObject(request));
272
292
  } else {
273
- params = patternLexer.getParamValues(request, this._matchRegexp, this._router.shouldTypecast);
293
+ params = crossroads.patternLexer.getParamValues(request, this._matchRegexp, this._router.shouldTypecast);
274
294
  }
275
295
  return params;
276
296
  },
@@ -281,7 +301,8 @@ define(['signals'], function (signals) {
281
301
 
282
302
  _destroy : function () {
283
303
  this.matched.dispose();
284
- this.matched = this._pattern = this._matchRegexp = null;
304
+ this.switched.dispose();
305
+ this.matched = this.switched = this._pattern = this._matchRegexp = null;
285
306
  },
286
307
 
287
308
  toString : function () {
@@ -295,7 +316,7 @@ define(['signals'], function (signals) {
295
316
  // Pattern Lexer ------
296
317
  //=====================
297
318
 
298
- patternLexer = crossroads.patternLexer = (function () {
319
+ crossroads.patternLexer = (function () {
299
320
 
300
321
 
301
322
  var ESCAPE_CHARS_REGEXP = /[\\.+*?\^$\[\](){}\/'#]/g, //match chars that should be escaped on string regexp
@@ -306,15 +327,21 @@ define(['signals'], function (signals) {
306
327
  REQUIRED_PARAMS_REGEXP = /\{([^}]+)\}/g, //match everything between `{ }`
307
328
  OPTIONAL_PARAMS_REGEXP = /:([^:]+):/g, //match everything between `: :`
308
329
  PARAMS_REGEXP = /(?:\{|:)([^}:]+)(?:\}|:)/g, //capture everything between `{ }` or `: :`
330
+ REQUIRED_REST = /\{([^}]+)\*\}/g,
331
+ OPTIONAL_REST = /:([^:]+)\*:/g,
309
332
 
310
333
  //used to save params during compile (avoid escaping things that
311
334
  //shouldn't be escaped).
312
335
  SAVE_REQUIRED_PARAMS = '__CR_RP__',
313
336
  SAVE_OPTIONAL_PARAMS = '__CR_OP__',
337
+ SAVE_REQUIRED_REST = '__CR_RR__',
338
+ SAVE_OPTIONAL_REST = '__CR_OR__',
314
339
  SAVE_REQUIRED_SLASHES = '__CR_RS__',
315
340
  SAVE_OPTIONAL_SLASHES = '__CR_OS__',
316
341
  SAVED_REQUIRED_REGEXP = new RegExp(SAVE_REQUIRED_PARAMS, 'g'),
317
342
  SAVED_OPTIONAL_REGEXP = new RegExp(SAVE_OPTIONAL_PARAMS, 'g'),
343
+ SAVED_REQUIRED_REST_REGEXP = new RegExp(SAVE_REQUIRED_REST, 'g'),
344
+ SAVED_OPTIONAL_REST_REGEXP = new RegExp(SAVE_OPTIONAL_REST, 'g'),
318
345
  SAVED_OPTIONAL_SLASHES_REGEXP = new RegExp(SAVE_OPTIONAL_SLASHES, 'g'),
319
346
  SAVED_REQUIRED_SLASHES_REGEXP = new RegExp(SAVE_REQUIRED_SLASHES, 'g');
320
347
 
@@ -350,6 +377,8 @@ define(['signals'], function (signals) {
350
377
  //save chars that shouldn't be escaped
351
378
  pattern = pattern.replace(OPTIONAL_SLASHES_REGEXP, '$1'+ SAVE_OPTIONAL_SLASHES +'$2');
352
379
  pattern = pattern.replace(REQUIRED_SLASHES_REGEXP, '$1'+ SAVE_REQUIRED_SLASHES +'$2');
380
+ pattern = pattern.replace(OPTIONAL_REST, SAVE_OPTIONAL_REST);
381
+ pattern = pattern.replace(REQUIRED_REST, SAVE_REQUIRED_REST);
353
382
  pattern = pattern.replace(OPTIONAL_PARAMS_REGEXP, SAVE_OPTIONAL_PARAMS);
354
383
  return pattern.replace(REQUIRED_PARAMS_REGEXP, SAVE_REQUIRED_PARAMS);
355
384
  }
@@ -357,6 +386,8 @@ define(['signals'], function (signals) {
357
386
  function untokenize(pattern) {
358
387
  pattern = pattern.replace(SAVED_OPTIONAL_SLASHES_REGEXP, '\\/?');
359
388
  pattern = pattern.replace(SAVED_REQUIRED_SLASHES_REGEXP, '\\/');
389
+ pattern = pattern.replace(SAVED_OPTIONAL_REST_REGEXP, '(.*)?'); // optional group to avoid passing empty string as captured
390
+ pattern = pattern.replace(SAVED_REQUIRED_REST_REGEXP, '(.+)');
360
391
  pattern = pattern.replace(SAVED_OPTIONAL_REGEXP, '([^\\/]+)?\/?');
361
392
  return pattern.replace(SAVED_REQUIRED_REGEXP, '([^\\/]+)');
362
393
  }
@@ -1,15 +1,7 @@
1
- /*
2
-
3
- Crossroads.js <http://millermedeiros.github.com/crossroads.js>
4
- Released under the MIT license
5
- Author: Miller Medeiros
6
- Version: 0.7.1 - Build: 93 (2012/02/02 09:29 AM)
7
- */
8
- (function(f){f(["signals"],function(g){function f(a,b){if(a.indexOf)return a.indexOf(b);else{for(var c=a.length;c--;)if(a[c]===b)return c;return-1}}function i(a,b){return"[object "+b+"]"===Object.prototype.toString.call(a)}function n(a){return a===null||a==="null"?null:a==="true"?!0:a==="false"?!1:a===m||a==="undefined"?m:a===""||isNaN(a)?a:parseFloat(a)}function k(){this._routes=[];this.bypassed=new g.Signal;this.routed=new g.Signal}function o(a,b,c,e){var d=i(a,"RegExp");this._router=e;this._pattern=
9
- a;this._paramsIds=d?null:h.getParamIds(this._pattern);this._optionalParamsIds=d?null:h.getOptionalParamsIds(this._pattern);this._matchRegexp=d?a:h.compilePattern(a);this.matched=new g.Signal;b&&this.matched.add(b);this._priority=c||0}var j,h,m;k.prototype={normalizeFn:null,create:function(){return new k},shouldTypecast:!1,addRoute:function(a,b,c){a=new o(a,b,c,this);this._sortedInsert(a);return a},removeRoute:function(a){var b=f(this._routes,a);b!==-1&&this._routes.splice(b,1);a._destroy()},removeAllRoutes:function(){for(var a=
10
- this.getNumRoutes();a--;)this._routes[a]._destroy();this._routes.length=0},parse:function(a){var a=a||"",b=this._getMatchedRoutes(a),c=0,e=b.length,d;if(e)for(;c<e;)d=b[c],d.route.matched.dispatch.apply(d.route.matched,d.params),d.isFirst=!c,this.routed.dispatch(a,d),c+=1;else this.bypassed.dispatch(a)},getNumRoutes:function(){return this._routes.length},_sortedInsert:function(a){var b=this._routes,c=b.length;do--c;while(b[c]&&a._priority<=b[c]._priority);b.splice(c+1,0,a)},_getMatchedRoutes:function(a){for(var b=
11
- [],c=this._routes,e=c.length,d;d=c[--e];)(!b.length||d.greedy)&&d.match(a)&&b.push({route:d,params:d._getParamsArray(a)});return b},toString:function(){return"[crossroads numRoutes:"+this.getNumRoutes()+"]"}};j=new k;j.VERSION="0.7.1";o.prototype={greedy:!1,rules:void 0,match:function(a){return this._matchRegexp.test(a)&&this._validateParams(a)},_validateParams:function(a){var b=this.rules,c=this._getParamsObject(a),e;for(e in b)if(e!=="normalize_"&&b.hasOwnProperty(e)&&!this._isValidParam(a,e,c))return!1;
12
- return!0},_isValidParam:function(a,b,c){var e=this.rules[b],d=c[b],l=!1;d==null&&this._optionalParamsIds&&f(this._optionalParamsIds,b)!==-1?l=!0:i(e,"RegExp")?l=e.test(d):i(e,"Array")?l=f(e,d)!==-1:i(e,"Function")&&(l=e(d,a,c));return l},_getParamsObject:function(a){for(var b=this._router.shouldTypecast,c=h.getParamValues(a,this._matchRegexp,b),e={},d=c.length;d--;)e[d]=c[d],this._paramsIds&&(e[this._paramsIds[d]]=c[d]);e.request_=b?n(a):a;e.vals_=c;return e},_getParamsArray:function(a){var b=this.rules?
13
- this.rules.normalize_:null;return(b=b||this._router.normalizeFn)&&i(b,"Function")?b(a,this._getParamsObject(a)):h.getParamValues(a,this._matchRegexp,this._router.shouldTypecast)},dispose:function(){this._router.removeRoute(this)},_destroy:function(){this.matched.dispose();this.matched=this._pattern=this._matchRegexp=null},toString:function(){return'[Route pattern:"'+this._pattern+'", numListeners:'+this.matched.getNumListeners()+"]"}};h=j.patternLexer=function(){function a(a,b){for(var c=[],d;d=a.exec(b);)c.push(d[1]);
14
- return c}var b=/[\\.+*?\^$\[\](){}\/'#]/g,c=/\/$/g,e=/([:}]|\w(?=\/))\/?(:)/g,d=/([:}])\/?(\{)/g,f=/\{([^}]+)\}/g,g=/:([^:]+):/g,h=/(?:\{|:)([^}:]+)(?:\}|:)/g,i=RegExp("__CR_RP__","g"),j=RegExp("__CR_OP__","g"),k=RegExp("__CR_OS__","g"),m=RegExp("__CR_RS__","g");return{getParamIds:function(b){return a(h,b)},getOptionalParamsIds:function(b){return a(g,b)},getParamValues:function(a,b,c){if(a=b.exec(a))if(a.shift(),c){c=a;a=c.length;for(b=[];a--;)b[a]=n(c[a]);a=b}return a},compilePattern:function(a){if(a=
15
- a||"")a=a.replace(c,""),a=a.replace(e,"$1__CR_OS__$2"),a=a.replace(d,"$1__CR_RS__$2"),a=a.replace(g,"__CR_OP__"),a=a.replace(f,"__CR_RP__"),a=a.replace(b,"\\$&"),a=a.replace(k,"\\/?"),a=a.replace(m,"\\/"),a=a.replace(j,"([^\\/]+)?/?"),a=a.replace(i,"([^\\/]+)");return RegExp("^"+a+"/?$")}}}();return j})})(typeof define==="function"&&define.amd?define:function(f,g){typeof module!=="undefined"&&module.exports?module.exports=g(require(f[0])):window.crossroads=g(window[f[0]])});
1
+ /** @license
2
+ * crossroads <http://millermedeiros.github.com/crossroads.js/>
3
+ * License: MIT
4
+ * Author: Miller Medeiros
5
+ * Version: 0.8.0 (2012/3/5 14:26)
6
+ */
7
+ (function(a){a(["signals"],function(a){function d(a,b){if(a.indexOf)return a.indexOf(b);var c=a.length;while(c--)if(a[c]===b)return c;return-1}function e(a,b){return"[object "+b+"]"===Object.prototype.toString.call(a)}function f(a){return e(a,"RegExp")}function g(a){return e(a,"Array")}function h(a){return e(a,"Function")}function i(a){var b;return a===null||a==="null"?b=null:a==="true"?b=!0:a==="false"?b=!1:a===c||a==="undefined"?b=c:a===""||isNaN(a)?b=a:b=parseFloat(a),b}function j(a){var b=a.length,c=[];while(b--)c[b]=i(a[b]);return c}function k(){this._routes=[],this._prevRoutes=[],this.bypassed=new a.Signal,this.routed=new a.Signal}function l(c,d,e,g){var h=f(c),i=b.patternLexer;this._router=g,this._pattern=c,this._paramsIds=h?null:i.getParamIds(this._pattern),this._optionalParamsIds=h?null:i.getOptionalParamsIds(this._pattern),this._matchRegexp=h?c:i.compilePattern(c),this.matched=new a.Signal,this.switched=new a.Signal,d&&this.matched.add(d),this._priority=e||0}var b,c;return k.prototype={normalizeFn:null,create:function(){return new k},shouldTypecast:!1,addRoute:function(a,b,c){var d=new l(a,b,c,this);return this._sortedInsert(d),d},removeRoute:function(a){var b=d(this._routes,a);b!==-1&&this._routes.splice(b,1),a._destroy()},removeAllRoutes:function(){var a=this.getNumRoutes();while(a--)this._routes[a]._destroy();this._routes.length=0},parse:function(a,b){a=a||"",b=b||[];var c=this._getMatchedRoutes(a),d=0,e=c.length,f;if(e){this._notifyPrevRoutes(a),this._prevRoutes=c;while(d<e)f=c[d],f.route.matched.dispatch.apply(f.route.matched,b.concat(f.params)),f.isFirst=!d,this.routed.dispatch.apply(this.routed,b.concat([a,f])),d+=1}else this.bypassed.dispatch.apply(this.bypassed,b.concat([a]))},_notifyPrevRoutes:function(a){var b=0,c;while(c=this._prevRoutes[b++])c.route.switched&&c.route.switched.dispatch(a)},getNumRoutes:function(){return this._routes.length},_sortedInsert:function(a){var b=this._routes,c=b.length;do--c;while(b[c]&&a._priority<=b[c]._priority);b.splice(c+1,0,a)},_getMatchedRoutes:function(a){var b=[],c=this._routes,d=c.length,e;while(e=c[--d])(!b.length||e.greedy)&&e.match(a)&&b.push({route:e,params:e._getParamsArray(a)});return b},toString:function(){return"[crossroads numRoutes:"+this.getNumRoutes()+"]"}},b=new k,b.VERSION="0.8.0",b.NORM_AS_ARRAY=function(a,b){return[b.vals_]},b.NORM_AS_OBJECT=function(a,b){return[b]},l.prototype={greedy:!1,rules:void 0,match:function(a){return this._matchRegexp.test(a)&&this._validateParams(a)},_validateParams:function(a){var b=this.rules,c=this._getParamsObject(a),d;for(d in b)if(d!=="normalize_"&&b.hasOwnProperty(d)&&!this._isValidParam(a,d,c))return!1;return!0},_isValidParam:function(a,b,c){var e=this.rules[b],i=c[b],j=!1;return i==null&&this._optionalParamsIds&&d(this._optionalParamsIds,b)!==-1?j=!0:f(e)?j=e.test(i):g(e)?j=d(e,i)!==-1:h(e)&&(j=e(i,a,c)),j},_getParamsObject:function(a){var c=this._router.shouldTypecast,d=b.patternLexer.getParamValues(a,this._matchRegexp,c),e={},f=d.length;while(f--)e[f]=d[f],this._paramsIds&&(e[this._paramsIds[f]]=d[f]);return e.request_=c?i(a):a,e.vals_=d,e},_getParamsArray:function(a){var c=this.rules?this.rules.normalize_:null,d;return c=c||this._router.normalizeFn,c&&h(c)?d=c(a,this._getParamsObject(a)):d=b.patternLexer.getParamValues(a,this._matchRegexp,this._router.shouldTypecast),d},dispose:function(){this._router.removeRoute(this)},_destroy:function(){this.matched.dispose(),this.switched.dispose(),this.matched=this.switched=this._pattern=this._matchRegexp=null},toString:function(){return'[Route pattern:"'+this._pattern+'", numListeners:'+this.matched.getNumListeners()+"]"}},b.patternLexer=function(){function w(a,b){var c=[],d;while(d=a.exec(b))c.push(d[1]);return c}function x(a){return w(g,a)}function y(a){return w(f,a)}function z(c){return c=c||"",c&&(c=c.replace(b,""),c=A(c),c=c.replace(a,"\\$&"),c=B(c)),new RegExp("^"+c+"/?$")}function A(a){return a=a.replace(c,"$1"+p+"$2"),a=a.replace(d,"$1"+o+"$2"),a=a.replace(i,n),a=a.replace(h,m),a=a.replace(f,l),a.replace(e,k)}function B(a){return a=a.replace(u,"\\/?"),a=a.replace(v,"\\/"),a=a.replace(t,"(.*)?"),a=a.replace(s,"(.+)"),a=a.replace(r,"([^\\/]+)?/?"),a.replace(q,"([^\\/]+)")}function C(a,b,c){var d=b.exec(a);return d&&(d.shift(),c&&(d=j(d))),d}var a=/[\\.+*?\^$\[\](){}\/'#]/g,b=/\/$/g,c=/([:}]|\w(?=\/))\/?(:)/g,d=/([:}])\/?(\{)/g,e=/\{([^}]+)\}/g,f=/:([^:]+):/g,g=/(?:\{|:)([^}:]+)(?:\}|:)/g,h=/\{([^}]+)\*\}/g,i=/:([^:]+)\*:/g,k="__CR_RP__",l="__CR_OP__",m="__CR_RR__",n="__CR_OR__",o="__CR_RS__",p="__CR_OS__",q=new RegExp(k,"g"),r=new RegExp(l,"g"),s=new RegExp(m,"g"),t=new RegExp(n,"g"),u=new RegExp(p,"g"),v=new RegExp(o,"g");return{getParamIds:x,getOptionalParamsIds:y,getParamValues:C,compilePattern:z}}(),b})})(typeof define=="function"&&define.amd?define:function(a,b){typeof module!="undefined"&&module.exports?module.exports=b(require(a[0])):window.crossroads=b(window[a[0]])})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crossroadsjs-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-03 00:00:00.000000000 Z
12
+ date: 2012-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
16
- requirement: &22510320 !ruby/object:Gem::Requirement
16
+ requirement: &21993624 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *22510320
24
+ version_requirements: *21993624
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &22509852 !ruby/object:Gem::Requirement
27
+ requirement: &21993312 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '2.0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *22509852
35
+ version_requirements: *21993312
36
36
  description: Provides Crossroads.js for use with Rails 3
37
37
  email: philostler@gmail.com
38
38
  executables: []
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
76
  version: '0'
77
77
  requirements: []
78
78
  rubyforge_project:
79
- rubygems_version: 1.8.15
79
+ rubygems_version: 1.8.16
80
80
  signing_key:
81
81
  specification_version: 3
82
82
  summary: Crossroads.js for Rails