# javascript-route-matcher **Repository Path**: mirrors_Semigradsky/javascript-route-matcher ## Basic Information - **Project Name**: javascript-route-matcher - **Description**: A simple route matching / url building utility. Intended to be included as part of a larger routing library. - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JavaScript Basic Route Matcher A simple route matching / url building utility. Intended to be included as part of a larger routing library. ## Getting Started In Node.js, run `npm install route-matcher` and then use this code: ```javascript var routeMatcher = require("route-matcher").routeMatcher; var myRoute = routeMatcher("user/:id"); ``` Or in the browser: ```html ``` In the browser, you can attach routeMatcher to any object. ```html ``` ## Sample Usage ```javascript // Use routeMatcher to create a reusable route matching function. var search = routeMatcher("search/:query/p:page"); search.parse("search/gonna-fail") // null (no match) search.parse("search/cowboy/p5") // {query: "cowboy", page: "5"} search.parse("search/gnarf/p10") // {query: "gnarf", page: "10"} // But wait, it goes both ways! search.stringify({query: "bonus", page: "6"}) // "search/bonus/p6" // You can also pass in a map of per-param validators after the route, each can // be a RegExp to test against, function that accepts a value (and returns true // or false) or value to match against. var user = routeMatcher("user/:id/:other", { id: /^\d+$/, other: function(value) { return value === "" || value === "foo"; } }); user.parse("user/123/abc") // null (no match) user.parse("user/foo/") // null (no match) user.parse("user/123/") // {id: "123", other: ""} user.parse("user/123/foo") // {id: "123", other: "foo"} // Note that .stringify doesn't perform any validation. Should it? user.stringify({id: "abc", other: "xyz"}) // "user/abc/xyz" // You can pass in a RegExp route, which returns an object with a `captures` // property, or null if no match. Note that for RegExp routes, the .stringify // method always returns empty string, because stringification isn't supported. var users = routeMatcher(/^(users?)(?:\/(\d+)(?:\.\.(\d+))?)?/); users.parse("gonna-fail") // null (no match) users.parse("user") // {captures: ["user", undefined, undefined]} users.parse("users") // {captures: ["users", undefined, undefined]} users.parse("user/123") // {captures: ["user", "123", undefined]} users.parse("user/123..456") // {captures: ["user", "123", "456"]} ``` ## Documentation For now, look at the unit tests. ## Contributing In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt](https://github.com/cowboy/node-grunt). _Also, please don't edit files in the "dist" subdirectory as they are generated via grunt. You'll find source code in the "lib" subdirectory!_ ## Release History Nothing official yet... ## License Copyright (c) 2011 "Cowboy" Ben Alman Dual licensed under the MIT and GPL licenses.