Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / Configuration / RegexWorker.cs / 2 / RegexWorker.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
* Base class for browser capabilities object: just a read-only dictionary
* holder that supports Init()
*
*
*/
using System.Web.UI;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Globalization;
using System.Security.Permissions;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.RegularExpressions;
using System.Web.Util;
namespace System.Web.Configuration {
//
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class RegexWorker {
internal static readonly Regex RefPat = new BrowserCapsRefRegex();
private Hashtable _groups;
private HttpBrowserCapabilities _browserCaps;
public RegexWorker(HttpBrowserCapabilities browserCaps) {
_browserCaps = browserCaps;
}
private string Lookup(string from) {
MatchCollection matches = RefPat.Matches(from);
// shortcut for no reference case
if (matches.Count == 0) {
return from;
}
StringBuilder sb = new StringBuilder();
int startIndex = 0;
foreach (Match match in matches) {
int length = match.Index - startIndex;
sb.Append(from.Substring(startIndex, length));
startIndex = match.Index + match.Length;
string groupName = match.Groups["name"].Value;
string result = null;
if (_groups != null) {
result = (String)_groups[groupName];
}
if (result == null) {
result = _browserCaps[groupName];
}
sb.Append(result);
}
sb.Append(from, startIndex, from.Length - startIndex);
string output = sb.ToString();
// Return null instead of empty string since empty string is used to override values.
if (output.Length == 0) {
return null;
}
return output;
}
public string this[string key] {
get {
return Lookup(key);
}
}
public bool ProcessRegex(string target, string regexExpression) {
if(target == null) {
target = String.Empty;
}
Regex regex = new Regex(regexExpression, RegexOptions.ExplicitCapture);
Match match = regex.Match(target);
if(match.Success == false) {
return false;
}
string[] groups = regex.GetGroupNames();
if (groups.Length > 0) {
if (_groups == null) {
_groups = new Hashtable();
}
for (int i = 0; i < groups.Length; i++) {
_groups[groups[i]] = match.Groups[i].Value;
}
}
return true;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PolyLineSegment.cs
- WebPartHelpVerb.cs
- EntitySqlQueryState.cs
- Debug.cs
- LockedAssemblyCache.cs
- CmsUtils.cs
- InvariantComparer.cs
- SettingsPropertyNotFoundException.cs
- XmlSchemaAny.cs
- SQLStringStorage.cs
- DrawingContextWalker.cs
- ConfigXmlCDataSection.cs
- ConfigXmlCDataSection.cs
- AutomationPatternInfo.cs
- GetFileNameResult.cs
- PrimitiveSchema.cs
- XPathEmptyIterator.cs
- CfgParser.cs
- DetailsViewPageEventArgs.cs
- Deserializer.cs
- MeasurementDCInfo.cs
- CodeTypeDelegate.cs
- ViewStateException.cs
- DependencyObjectProvider.cs
- ExpressionConverter.cs
- Membership.cs
- FormatterServices.cs
- PropertyPathConverter.cs
- WebBrowser.cs
- XsdDateTime.cs
- CorePropertiesFilter.cs
- QueryExpression.cs
- ValidationVisibilityAttribute.cs
- FunctionQuery.cs
- Rectangle.cs
- WindowsAuthenticationEventArgs.cs
- SelectionHighlightInfo.cs
- HttpInputStream.cs
- ScriptControlDescriptor.cs
- DataControlHelper.cs
- Empty.cs
- Vector3D.cs
- SplitContainerDesigner.cs
- WorkflowApplicationIdleEventArgs.cs
- OdbcError.cs
- HtmlToClrEventProxy.cs
- EnumType.cs
- PolyQuadraticBezierSegment.cs
- RecordManager.cs
- VirtualPathProvider.cs
- CallbackHandler.cs
- SelectQueryOperator.cs
- ItemCheckEvent.cs
- Substitution.cs
- ProjectionPruner.cs
- ArrayItemReference.cs
- ItemPager.cs
- NetworkInformationException.cs
- DataPagerField.cs
- PropertyValueUIItem.cs
- OutputCacheSection.cs
- Process.cs
- EventToken.cs
- TypeInitializationException.cs
- ScheduleChanges.cs
- RouteData.cs
- UIElementParagraph.cs
- CalendarDesigner.cs
- MethodRental.cs
- StreamUpgradeAcceptor.cs
- TableLayoutStyle.cs
- XmlCountingReader.cs
- FigureParagraph.cs
- GrammarBuilderDictation.cs
- WebBrowserDocumentCompletedEventHandler.cs
- XmlStreamNodeWriter.cs
- EntityViewGenerator.cs
- DomainUpDown.cs
- ScriptControl.cs
- DesignTimeParseData.cs
- GPStream.cs
- ErrorFormatterPage.cs
- UnmanagedMarshal.cs
- DataServiceRequest.cs
- DefaultBinder.cs
- MetadataUtil.cs
- DataPagerFieldCollection.cs
- CounterCreationData.cs
- SqlRowUpdatedEvent.cs
- XpsS0ValidatingLoader.cs
- CodeDirectiveCollection.cs
- TemplateBindingExtensionConverter.cs
- SerializationFieldInfo.cs
- PaintValueEventArgs.cs
- ModifiableIteratorCollection.cs
- Point.cs
- DataGridViewAccessibleObject.cs
- ContainerVisual.cs
- XmlSchema.cs
- SchemaAttDef.cs