{"id":21428669,"url":"https://github.com/spikef/open-path","last_synced_at":"2025-03-16T21:26:07.034Z","repository":{"id":57315096,"uuid":"117531291","full_name":"Spikef/open-path","owner":"Spikef","description":"Url path parser for OpenAPI.","archived":false,"fork":false,"pushed_at":"2018-04-12T08:49:51.000Z","size":9,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-23T08:15:31.217Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Spikef.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-15T10:28:45.000Z","updated_at":"2018-04-12T08:49:53.000Z","dependencies_parsed_at":"2022-09-18T20:51:21.470Z","dependency_job_id":null,"html_url":"https://github.com/Spikef/open-path","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spikef%2Fopen-path","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spikef%2Fopen-path/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spikef%2Fopen-path/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Spikef%2Fopen-path/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Spikef","download_url":"https://codeload.github.com/Spikef/open-path/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243934589,"owners_count":20371219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-22T22:14:19.239Z","updated_at":"2025-03-16T21:26:07.012Z","avatar_url":"https://github.com/Spikef.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# open-path\n\n\u003e Url path parser for OpenAPI.\n\n## Install\n\n```bash\n$ npm i open-path\n```\n\n## Usage\n\n```javascript\nvar Parse = require('open-path');\nvar parse = new Parse('/user/{category}/today/{tag}/detail');\n// or\n// var parse = new Parse('/user/:category/today/:tag/detail');\n\nconsole.log(parse.path);\n// prints: /user/{category}/today/{tag}/detail\n\n// match\nparse.match(ctx.path);  // returns params if matched or null\n\n// build\nparse.build({\n    category: 'tech',\n    tag: 'mobile'\n});\n// returns: /user/tech/today/mobile/detail\n```\n\n## Parameters\n\nThe path argument is used to define parameters.\n\n### Named Parameters\n\nNamed parameters are defined by prefixing a colon to the parameter name (:foo) or surround with braces ({foo}). By default, the parameter will match until the following path segment.\n\n### Unnamed Parameters\n\nUnnamed parameters are defined by regexp and naming by index.\n\n### Parameter Modifiers\n\n#### Optional\n\nParameters can be suffixed with a question mark (?) to make the parameter optional.\n\n```javascript\nvar parse = new Parse('/:foo/:bar?');\n```\n\n#### Zero or more\n\nParameters can be suffixed with an asterisk (*) to denote a zero or more parameter matches. The prefix is taken into account for each match.\n\n```javascript\nvar parse = new Parse('/:foo*');\n```\n\n#### One or more\n\nParameters can be suffixed with a plus sign (+) to denote a one or more parameter matches. The prefix is taken into account for each match.\n\n```javascript\nvar parse = new Parse('/:foo+');\n```\n\n## Path\n\nPath can be suffixed with an asterisk (*) or plus sign (+) to allow more path matches.\n\n### Zero or more\n\n```javascript\nvar parse = new Parse('/api*');\n```\n\n### One or more\n\n```javascript\nvar parse = new Parse('/api+');\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspikef%2Fopen-path","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspikef%2Fopen-path","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspikef%2Fopen-path/lists"}