Class RouteTemplateParser
- Namespace
- Blazing.Mvvm.Components.Routing
- Assembly
- Blazing.Mvvm.dll
Parses route template patterns into structured RouteTemplate objects.
public sealed class RouteTemplateParserInheritance
Remarks
This parser extracts route parameters from template strings and identifies their modifiers (optional, catch-all, constraints). Supports Blazor/ASP.NET Core route template syntax including:
{name}- Required parameter{name?}- Optional parameter{*name}- Catch-all parameter{name:constraint}- Constrained parameter
Methods
Parse(string)
Parses a route template pattern string into a RouteTemplate object.
public RouteTemplate Parse(string pattern)Parameters
patternstring-
The route template pattern to parse (e.g., "/users/{userId}/posts/{postId}").
Returns
- RouteTemplate
-
A RouteTemplate object containing the pattern and extracted parameters.
Examples
var parser = new RouteTemplateParser();
// Parse a simple route
var template1 = parser.Parse("/users");
// Result: Pattern="/users", Parameters=[]
// Parse a route with required parameter
var template2 = parser.Parse("/users/{userId}");
// Result: Pattern="/users/{userId}", Parameters=[{Name="userId", IsOptional=false, IsCatchAll=false}]
// Parse a route with optional parameter
var template3 = parser.Parse("/users/{userId?}");
// Result: Pattern="/users/{userId?}", Parameters=[{Name="userId", IsOptional=true, IsCatchAll=false}]
// Parse a route with catch-all parameter
var template4 = parser.Parse("/docs/{*path}");
// Result: Pattern="/docs/{*path}", Parameters=[{Name="path", IsOptional=false, IsCatchAll=true}]
// Parse a route with constraint
var template5 = parser.Parse("/orders/{orderId:int}");
// Result: Pattern="/orders/{orderId:int}", Parameters=[{Name="orderId", Constraint="int"}]
Remarks
This method extracts all route parameters from the pattern and returns a structured representation. If no parameters are found, the returned RouteTemplate will have an empty Parameters list.
Exceptions
- ArgumentNullException
-
Thrown when
patternis null.
ParseMany(IEnumerable<string>)
Parses multiple route template patterns into a collection of RouteTemplate objects.
public List<RouteTemplate> ParseMany(IEnumerable<string> patterns)Parameters
patternsIEnumerable<string>-
The route template patterns to parse.
Returns
- List<RouteTemplate>
-
A list of RouteTemplate objects, one for each input pattern.
Examples
var parser = new RouteTemplateParser();
var patterns = new[] { "/test", "/test/{echo}", "/test/{echo?}" };
var templates = parser.ParseMany(patterns);
// Result: List of 3 RouteTemplate objects
Remarks
This is a convenience method for parsing multiple route patterns in a single call. Each pattern is parsed independently using the Parse(string) method.
Exceptions
- ArgumentNullException
-
Thrown when
patternsis null.