Extract Params
Installation
npm install extract-params --save
Then, in your app:
var extractParams = extractParams;// orvar extractParamsInFirstMatch = extractParamsInFirstMatch;
API
extractParams(str, pattern)
Tests whether str
matches the given parameterized pattern. If match is successful, it returns a hash of parameters and their values. Otherwise, extractParams
returns null
.
The match is considered successful only if str
matches the pattern
at the start and at the end (see examples 2 and 3 below).
Example 1
var params = ; /* Returns: { userId: '123', friendId: '456' }*/
Example 2
var params = ; /* Returns: null because `str` doesn't match the `pattern` at the start.*/
Example 3
var params = ; /* Returns: null because `str` doesn't match the `pattern` at the end.*/
Example 4
var params = ; /* Returns: null because the pattern is case sensitive by default*/
Example 5
var params = ; /* Returns: { userId: '123', friendId: '456' }*/
Example 6
{ return Object;} var params = ; /* Returns: { user: 'misha', friend: 'mark' }*/
Example 7
var companyRegex = /^[a-zA-Z]+$/;var employeeRegex = /^[a-z-]+$/; { return typeof paramscompany === 'string' && companyRegex && typeof paramsemployee === 'string' && employeeRegex ? params : null;} var params = ; /* Returns: null because 'Yahoo7' contains a number*/
extractParamsInFirstMatch(str, patterns)
Tests whether str
matches one of the parameterized patterns. If none of the patterns
match, extractParamsInFirstMatch
returns null
. Otherwise, it returns the matching pattern index and its parameters.
Example 1
var params = ; /* Returns: { patternIndex: 3, params: { userId: '123' } }*/
Example 2
var params = ; /* Returns: null because none of the patterns match.*/
Example 3
{ if !'userId' in params return params; // Without this check, '/users/1234/friends/567' would match '/users/:userId' // with { userId: '1234/friends/567' } if !/^\d+$/ return null; var userId = ; return userId >= 1 && userId <= 999 ? params : null;}var params = ; /* Returns: null because userId > 999*/
Patterns
The functions in this library operate on a pattern
type.
Basic patterns
In its simplest form, pattern is just a string, e.g. /users
.
Patterns can have parameters, e.g. /users/:userId/friends/:friendId/photo
.
Parameters must start with a :
, and can contain letters only. Therefore, :username
, :userName
, and :USERNAME
are valid parameters, but :user-name
, :user_name
and :iphone6
are not.
Advanced patterns
For more advanced patterns, an object with the following keys can be provided:
pattern
- (required) The pattern string.caseSensitive
- (optional) Boolean indicating whether the pattern is considered case sensitive or not. Example
Defaults totrue
.transform
- (optional) Function that takes the extracted params, and returns a manipulated version of them. Example
If it returnsnull
, the match fails. Example
Defaults to the identity function.
Running Tests
npm test