| 22 | } |
| 23 | |
| 24 | export const parsePath = (route: Route): RegExp => { |
| 25 | const segments = getPathSegments(route); |
| 26 | const regexBody = segments.reduce( |
| 27 | (acc, segment) => |
| 28 | segment.startsWith(PARAM_PREFIX) |
| 29 | ? `${acc}${DIV_PARAM}` |
| 30 | : `${acc}${DIV}${segment}`, |
| 31 | '' |
| 32 | ); |
| 33 | |
| 34 | if (route.options.exact ?? true) { |
| 35 | return new RegExp(`^${regexBody}${EXACT_END}`, 'i'); |
| 36 | } else { |
| 37 | return new RegExp( |
| 38 | `^${regexBody}${regexBody ? NON_EXACT_END : WILDCARD}`, |
| 39 | 'i' |
| 40 | ); |
| 41 | } |
| 42 | }; |
| 43 | |
| 44 | export const matchRoute = ( |
| 45 | url: string, |