@@ -30,8 +30,8 @@ var PATH_REGEXP = new RegExp([
30
30
/**
31
31
* Parse a string for the raw tokens.
32
32
*
33
- * @param {String } str
34
- * @return {Array }
33
+ * @param {string } str
34
+ * @return {! Array }
35
35
*/
36
36
function parse ( str ) {
37
37
var tokens = [ ]
@@ -97,8 +97,8 @@ function parse (str) {
97
97
/**
98
98
* Compile a string to a template function for the path.
99
99
*
100
- * @param {String } str
101
- * @return {Function }
100
+ * @param {string } str
101
+ * @return {!function(Object=) }
102
102
*/
103
103
function compile ( str ) {
104
104
return tokensToFunction ( parse ( str ) )
@@ -184,8 +184,8 @@ function tokensToFunction (tokens) {
184
184
/**
185
185
* Escape a regular expression string.
186
186
*
187
- * @param {String } str
188
- * @return {String }
187
+ * @param {string } str
188
+ * @return {string }
189
189
*/
190
190
function escapeString ( str ) {
191
191
return str . replace ( / ( [ . + * ? = ^ ! : $ { } ( ) [ \] | \/ ] ) / g, '\\$1' )
@@ -194,8 +194,8 @@ function escapeString (str) {
194
194
/**
195
195
* Escape the capturing group by escaping special characters and meaning.
196
196
*
197
- * @param {String } group
198
- * @return {String }
197
+ * @param {string } group
198
+ * @return {string }
199
199
*/
200
200
function escapeGroup ( group ) {
201
201
return group . replace ( / ( [ = ! : $ \/ ( ) ] ) / g, '\\$1' )
@@ -204,9 +204,9 @@ function escapeGroup (group) {
204
204
/**
205
205
* Attach the keys as a property of the regexp.
206
206
*
207
- * @param {RegExp } re
208
- * @param {Array } keys
209
- * @return {RegExp }
207
+ * @param {! RegExp } re
208
+ * @param {Array } keys
209
+ * @return {! RegExp }
210
210
*/
211
211
function attachKeys ( re , keys ) {
212
212
re . keys = keys
@@ -217,7 +217,7 @@ function attachKeys (re, keys) {
217
217
* Get the flags for a regexp from the options.
218
218
*
219
219
* @param {Object } options
220
- * @return {String }
220
+ * @return {string }
221
221
*/
222
222
function flags ( options ) {
223
223
return options . sensitive ? '' : 'i'
@@ -226,9 +226,9 @@ function flags (options) {
226
226
/**
227
227
* Pull out keys from a regexp.
228
228
*
229
- * @param {RegExp } path
230
- * @param {Array } keys
231
- * @return {RegExp }
229
+ * @param {! RegExp } path
230
+ * @param {! Array } keys
231
+ * @return {! RegExp }
232
232
*/
233
233
function regexpToRegexp ( path , keys ) {
234
234
// Use a negative lookahead to match only capturing groups.
@@ -253,10 +253,10 @@ function regexpToRegexp (path, keys) {
253
253
/**
254
254
* Transform an array into a regexp.
255
255
*
256
- * @param {Array } path
257
- * @param {Array } keys
258
- * @param {Object } options
259
- * @return {RegExp }
256
+ * @param {! Array } path
257
+ * @param {Array } keys
258
+ * @param {! Object } options
259
+ * @return {! RegExp }
260
260
*/
261
261
function arrayToRegexp ( path , keys , options ) {
262
262
var parts = [ ]
@@ -273,10 +273,10 @@ function arrayToRegexp (path, keys, options) {
273
273
/**
274
274
* Create a path regexp from string input.
275
275
*
276
- * @param {String } path
277
- * @param {Array } keys
278
- * @param {Object } options
279
- * @return {RegExp }
276
+ * @param {string } path
277
+ * @param {! Array } keys
278
+ * @param {! Object } options
279
+ * @return {! RegExp }
280
280
*/
281
281
function stringToRegexp ( path , keys , options ) {
282
282
var tokens = parse ( path )
@@ -295,10 +295,9 @@ function stringToRegexp (path, keys, options) {
295
295
/**
296
296
* Expose a function for taking tokens and returning a RegExp.
297
297
*
298
- * @param {Array } tokens
299
- * @param {Array } keys
300
- * @param {Object } options
301
- * @return {RegExp }
298
+ * @param {!Array } tokens
299
+ * @param {Object= } options
300
+ * @return {!RegExp }
302
301
*/
303
302
function tokensToRegExp ( tokens , options ) {
304
303
options = options || { }
@@ -363,28 +362,28 @@ function tokensToRegExp (tokens, options) {
363
362
* placeholder key descriptions. For example, using `/user/:id`, `keys` will
364
363
* contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
365
364
*
366
- * @param {(String |RegExp|Array) } path
367
- * @param {Array } [ keys]
368
- * @param {Object } [ options]
369
- * @return {RegExp }
365
+ * @param {(string |RegExp|Array) } path
366
+ * @param {( Array|Object)= } keys
367
+ * @param {Object= } options
368
+ * @return {! RegExp }
370
369
*/
371
370
function pathToRegexp ( path , keys , options ) {
372
371
keys = keys || [ ]
373
372
374
373
if ( ! isarray ( keys ) ) {
375
- options = keys
374
+ options = /** @type { !Object } */ ( keys )
376
375
keys = [ ]
377
376
} else if ( ! options ) {
378
377
options = { }
379
378
}
380
379
381
380
if ( path instanceof RegExp ) {
382
- return regexpToRegexp ( path , keys , options )
381
+ return regexpToRegexp ( path , /** @type { !Array } */ ( keys ) )
383
382
}
384
383
385
384
if ( isarray ( path ) ) {
386
- return arrayToRegexp ( path , keys , options )
385
+ return arrayToRegexp ( /** @type { !Array } */ ( path ) , /** @type { !Array } */ ( keys ) , options )
387
386
}
388
387
389
- return stringToRegexp ( path , keys , options )
388
+ return stringToRegexp ( /** @type { string } */ ( path ) , /** @type { !Array } */ ( keys ) , options )
390
389
}
0 commit comments