@@ -2,6 +2,9 @@ import _ from 'underscore';
2
2
import Backbone from 'backbone' ;
3
3
import Radio from 'backbone.radio' ; // eslint-disable-line
4
4
5
+ // https://github.com/jashkenas/backbone/blob/1.2.1/backbone.js#L1425
6
+ const namedParamRegex = / ( \( \? ) ? : \w + / ;
7
+
5
8
/**
6
9
* Backbone.Router coupled with a Backbone.Radio Channel.
7
10
*
@@ -18,7 +21,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
18
21
* @param {Boolean } [options.channelName]
19
22
* @param {Boolean } [options.routeTriggers]
20
23
*/
21
- constructor : function ( options ) {
24
+ constructor ( options ) {
22
25
_ . extend ( this , _ . pick ( options , [ 'channelName' , 'routeTriggers' ] ) ) ;
23
26
24
27
this . _ch = Backbone . Radio . channel ( _ . result ( this , 'channelName' ) ) ;
@@ -48,7 +51,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
48
51
* @memberOf EventRouter
49
52
* @returns {Backbone.Radio.Channel }
50
53
*/
51
- getChannel : function ( ) {
54
+ getChannel ( ) {
52
55
return this . _ch ;
53
56
} ,
54
57
@@ -59,8 +62,8 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
59
62
* @method _initRoutes
60
63
* @memberOf EventRouter
61
64
*/
62
- _initRoutes : function ( ) {
63
- this . _routeTriggers = _ . result ( this , 'routeTriggers' ) || { } ;
65
+ _initRoutes ( ) {
66
+ this . _routeTriggers = _ . result ( this , 'routeTriggers' , { } ) ;
64
67
65
68
_ . each ( this . _routeTriggers , this . _addRouteTrigger , this ) ;
66
69
} ,
@@ -75,7 +78,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
75
78
* @param {String } event - Event string to trigger on route
76
79
* @memberOf EventRouter
77
80
*/
78
- _addRouteTrigger : function ( routes , event ) {
81
+ _addRouteTrigger ( routes , event ) {
79
82
// handle any route as an array by default for the _.each
80
83
routes = _ . isArray ( routes ) ? routes : [ routes ] ;
81
84
@@ -95,7 +98,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
95
98
* @memberOf EventRouter
96
99
* @returns {EventRouter }
97
100
*/
98
- addRouteTrigger : function ( routes , event ) {
101
+ addRouteTrigger ( routes , event ) {
99
102
this . _routeTriggers [ event ] = routes ;
100
103
this . _addRouteTrigger ( routes , event ) ;
101
104
@@ -118,13 +121,11 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
118
121
* @memberOf EventRouter
119
122
* @returns {EventRouter }
120
123
*/
121
- route : function ( route , name , callback ) {
122
- if ( _ . isFunction ( name ) ) {
123
- callback = name ;
124
- name = '' ;
125
- }
126
- if ( ! callback ) {
127
- callback = this [ name ] ;
124
+ route ( route , name , callback ) {
125
+ const bbRoute = Backbone . Router . prototype . route ;
126
+
127
+ if ( _ . isFunction ( name ) || ! callback ) {
128
+ return bbRoute . call ( this , route , name , callback ) ;
128
129
}
129
130
130
131
const wrappedCallback = _ . bind ( function ( ) {
@@ -139,7 +140,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
139
140
this . _clearRouteTrigger ( ) ;
140
141
} , this ) ;
141
142
142
- return Backbone . Router . prototype . route . call ( this , route , name , wrappedCallback ) ;
143
+ return bbRoute . call ( this , route , name , wrappedCallback ) ;
143
144
} ,
144
145
145
146
/**
@@ -150,7 +151,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
150
151
* @param {Array } args - Array of route name and route arguments
151
152
* @memberOf EventRouter
152
153
*/
153
- _storeRouteTrigger : function ( args ) {
154
+ _storeRouteTrigger ( args ) {
154
155
this . _routeArgs = this . _routeArgs || [ ] ;
155
156
this . _routeArgs . push ( args ) ;
156
157
} ,
@@ -164,7 +165,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
164
165
* @memberOf EventRouter
165
166
* @returns {Array }
166
167
*/
167
- _getCurrentRouteTrigger : function ( ) {
168
+ _getCurrentRouteTrigger ( ) {
168
169
return _ . last ( this . _routeArgs ) || [ ] ;
169
170
} ,
170
171
@@ -175,7 +176,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
175
176
* @method _clearRouteTrigger
176
177
* @memberOf EventRouter
177
178
*/
178
- _clearRouteTrigger : function ( ) {
179
+ _clearRouteTrigger ( ) {
179
180
this . _routeArgs . pop ( ) ;
180
181
} ,
181
182
@@ -188,7 +189,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
188
189
* @memberOf EventRouter
189
190
* @returns {Boolean }
190
191
*/
191
- _isTriggeredFromRoute : function ( ) {
192
+ _isTriggeredFromRoute ( ) {
192
193
const currentRoute = this . _getCurrentRouteTrigger ( ) ;
193
194
194
195
if ( arguments . length !== currentRoute . length ) {
@@ -210,7 +211,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
210
211
* @memberOf EventRouter
211
212
* @returns {EventRouter }
212
213
*/
213
- navigateFromEvent : function ( event ) {
214
+ navigateFromEvent ( event ) {
214
215
const route = this . getDefaultRoute ( event ) ;
215
216
216
217
// if no matching route exists do nothing
@@ -241,7 +242,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
241
242
* @memberOf EventRouter
242
243
* @returns {String }
243
244
*/
244
- getDefaultRoute : function ( event ) {
245
+ getDefaultRoute ( event ) {
245
246
const routes = this . _routeTriggers [ event ] ;
246
247
247
248
return _ . isArray ( routes ) ? routes [ 0 ] : routes ;
@@ -257,11 +258,8 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
257
258
* @memberOf EventRouter
258
259
* @returns {String }
259
260
*/
260
- _replaceParam : function ( route , arg ) {
261
- // https://github.com/jashkenas/backbone/blob/1.2.1/backbone.js#L1425
262
- const namedParam = / ( \( \? ) ? : \w + / ;
263
-
264
- return route . replace ( namedParam , arg ) ;
261
+ _replaceParam ( route , arg ) {
262
+ return route . replace ( namedParamRegex , arg ) ;
265
263
} ,
266
264
267
265
/**
@@ -275,7 +273,7 @@ const EventRouter = Backbone.EventRouter = Backbone.Router.extend({
275
273
* @memberOf EventRouter
276
274
* @returns {String }
277
275
*/
278
- translateRoute : function ( route , eventArgs ) {
276
+ translateRoute ( route , eventArgs ) {
279
277
return _ . reduce ( eventArgs , this . _replaceParam , route ) ;
280
278
}
281
279
} ) ;
0 commit comments