Table of Contents

Class RouteTemplateParser

Namespace
Blazing.Mvvm.Components.Routing
Assembly
Blazing.Mvvm.dll

Parses route template patterns into structured RouteTemplate objects.

public sealed class RouteTemplateParser

Inheritance

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

pattern string

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 pattern is null.

ParseMany(IEnumerable<string>)

Parses multiple route template patterns into a collection of RouteTemplate objects.

public List<RouteTemplate> ParseMany(IEnumerable<string> patterns)

Parameters

patterns IEnumerable<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 patterns is null.