50 lines
1.4 KiB
C#
50 lines
1.4 KiB
C#
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
|
|
namespace Microsoft.AspNet.Routing.Template
|
|
{
|
|
[DebuggerDisplay("{DebuggerToString()}")]
|
|
public class RouteTemplate
|
|
{
|
|
private const string SeparatorString = "/";
|
|
|
|
public RouteTemplate(List<TemplateSegment> segments)
|
|
{
|
|
if (segments == null)
|
|
{
|
|
throw new ArgumentNullException("segments");
|
|
}
|
|
|
|
Segments = segments;
|
|
|
|
Parameters = new List<TemplatePart>();
|
|
for (var i = 0; i < segments.Count; i++)
|
|
{
|
|
var segment = Segments[i];
|
|
for (var j = 0; j < segment.Parts.Count; j++)
|
|
{
|
|
var part = segment.Parts[j];
|
|
if (part.IsParameter)
|
|
{
|
|
Parameters.Add(part);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public List<TemplatePart> Parameters { get; private set; }
|
|
|
|
public List<TemplateSegment> Segments { get; private set; }
|
|
|
|
private string DebuggerToString()
|
|
{
|
|
return string.Join(SeparatorString, Segments.Select(s => s.DebuggerToString()));
|
|
}
|
|
}
|
|
}
|