/* UrlRewritingNet.UrlRewrite
* Version 2.0
*
* This Library is Copyright 2006 by Albert Weinert and Thomas Bandt.
*
* http://der-albert.com, http://blog.thomasbandt.de
*
* This Library is provided as is. No warrenty is expressed or implied.
*
* You can use these Library in free and commercial projects without a fee.
*
* No charge should be made for providing these Library to a third party.
*
* It is allowed to modify the source to fit your special needs. If you
* made improvements you should make it public available by sending us
* your modifications or publish it on your site. If you publish it on
* your own site you have to notify us. This is not a commitment that we
* include your modifications.
*
* This Copyright notice must be included in the modified source code.
*
* You are not allowed to build a commercial rewrite engine based on
* this code.
*
* Based on http://weblogs.asp.net/fmarguerie/archive/2004/11/18/265719.aspx
*
* For further informations see: http://www.urlrewriting.net/
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace UrlRewritingNet.Web{
internal class RewriteRuleCollection : List<RewriteRule>
{
public void RemoveByName(string ruleName)
{
RewriteRule forRemove = null;
foreach (RewriteRule rule in this)
{
if (rule.Name == ruleName)
{
forRemove = rule;
break;
}
}
if (forRemove != null)
Remove(forRemove);
}
public void ReplaceRuleByName(string ruleName, RewriteRule rule)
{
int idx = GetIndexByName(ruleName);
if (idx != -1)
{
rule.Name = ruleName;
this[idx] = rule;
}
else
{
throw new ArgumentException(string.Format("UrlRewritingNet: Unknown ruleName '{0}'", ruleName), "ruleName");
}
}
public void InsertRuleBeforeName(string positionRuleName, string ruleName, RewriteRule rule)
{
int idx = GetIndexByName(positionRuleName);
if (idx != -1)
{
rule.Name = ruleName;
Insert(idx, rule);
}
else
{
throw new ArgumentException(string.Format("UrlRewritingNet: Unknown ruleName '{0}'", ruleName), "ruleName");
}
}
private int GetIndexByName(string ruleName)
{
int foundIndex = -1;
for (int i = 0; i < this.Count; i++)
{
if (this[i].Name == ruleName)
{
foundIndex = i;
break;
}
}
return foundIndex;
}
}
}
|