protected virtual void WriteDefinition(RouteDefinition route, TextWriter output)
 {
     output.Write(@"RouteTable.mapRoute(""");
     output.Write(route.Name);
     output.Write(@""",""");
     output.Write(route.Url);
     output.Write(@""",");
     output.Write(_serializer.Serialize(route.Defaults));
     output.Write(",{");
     WriteConstraints(route.Constraints, output);
     output.Write("});");
 }
		protected virtual void WriteDefinition(RouteDefinition route, TextWriter output)
		{
			output.Write(@"RouteTable.mapRoute(""");
			output.Write(route.Name);
			output.Write(@""",""");
			output.Write(route.Url);
			output.Write(@""",");
			output.Write(_serializer.Serialize(route.Defaults));
			output.Write(",{");
			WriteConstraints(route.Constraints, output);
			output.Write("});");
		}
		/// <summary>
		/// Intercepts the route definition adding regex constraints 
		/// to its parameter values.
		/// </summary>
		/// <param name="definition">Route definition to manipulate.</param>
		public bool Intercept(RouteDefinition route)
		{
			Precondition.Require(route, () => 
				Error.ArgumentNull("route"));

			foreach (RegexConstraint constraint in route.Route
				.Constraints.OfType<RegexConstraint>())
			{
				route.Constraints.Add(new RegexConstraintDefinition(constraint));
			}
			return true;
		}
Пример #4
0
        /// <summary>
        /// Intercepts the route definition adding regex constraints
        /// to its parameter values.
        /// </summary>
        /// <param name="definition">Route definition to manipulate.</param>
        public bool Intercept(RouteDefinition route)
        {
            Precondition.Require(route, () =>
                                 Error.ArgumentNull("route"));

            foreach (RegexConstraint constraint in route.Route
                     .Constraints.OfType <RegexConstraint>())
            {
                route.Constraints.Add(new RegexConstraintDefinition(constraint));
            }
            return(true);
        }
Пример #5
0
		/// <summary>
		/// Gets the route definition from the provided route.
		/// </summary>
		/// <param name="name">The name of the route.</param>
		/// <param name="route">The route instance to create definition for.</param>
		public RouteDefinition Read(Route route)
		{
			string name = DetermineName(route);
			if (IsIgnored(route) || String.IsNullOrEmpty(name))
				return null;

			RouteDefinition definition = new RouteDefinition(name, route);
			foreach (IRouteInterceptor interceptor in Interceptors)
			{
				if (!interceptor.Intercept(definition))
					return null;
			}
			return definition;
		}
        public IEnumerable <RouteDefinition> GetRouteTable(RouteCollection routes)
        {
            List <RouteDefinition> collection = new List <RouteDefinition>();
            RouteReader            reader     = CreateReader(new IRouteInterceptor[] {
                new RegexConstraintReader(),
                new RouteVariableAssigner(routes.Variables)
            });

            foreach (Route route in routes.OfType <Route>())
            {
                RouteDefinition definition = reader.Read(route);
                if (definition != null)
                {
                    collection.Add(definition);
                }
            }
            return(collection);
        }
		public bool Intercept(RouteDefinition route)
		{
			Precondition.Require(route, () => Error.ArgumentNull("route"));
			MatchCollection matches = _variablePattern.Matches(route.Url);
			string url = route.Url;

			foreach (Match match in matches)
			{
				string name = match.Groups["name"].Value;
				object value;

				if (!_variables.TryGetValue(name, out value))
					throw Error.UndefinedRouteVariable(name);

				url = url.Replace(String.Format("[{0}]", name), Convert.ToString(value));
			}
			route.Url = url;
			return true;
		}
Пример #8
0
        /// <summary>
        /// Gets the route definition from the provided route.
        /// </summary>
        /// <param name="name">The name of the route.</param>
        /// <param name="route">The route instance to create definition for.</param>
        public RouteDefinition Read(Route route)
        {
            string name = DetermineName(route);

            if (IsIgnored(route) || String.IsNullOrEmpty(name))
            {
                return(null);
            }

            RouteDefinition definition = new RouteDefinition(name, route);

            foreach (IRouteInterceptor interceptor in Interceptors)
            {
                if (!interceptor.Intercept(definition))
                {
                    return(null);
                }
            }
            return(definition);
        }
        public bool Intercept(RouteDefinition route)
        {
            Precondition.Require(route, () => Error.ArgumentNull("route"));
            MatchCollection matches = _variablePattern.Matches(route.Url);
            string          url     = route.Url;

            foreach (Match match in matches)
            {
                string name = match.Groups["name"].Value;
                object value;

                if (!_variables.TryGetValue(name, out value))
                {
                    throw Error.UndefinedRouteVariable(name);
                }

                url = url.Replace(String.Format("[{0}]", name), Convert.ToString(value));
            }
            route.Url = url;
            return(true);
        }