Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Configuration / RegexWorker.cs / 1305376 / 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 {
//
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StrokeNodeOperations2.cs
- EncryptedType.cs
- CodeValidator.cs
- RepeatInfo.cs
- Root.cs
- DBConcurrencyException.cs
- XmlNullResolver.cs
- DataControlReferenceCollection.cs
- XmlCountingReader.cs
- OracleDataAdapter.cs
- Condition.cs
- EventLogWatcher.cs
- StatusBarDesigner.cs
- RadialGradientBrush.cs
- ThrowHelper.cs
- ConditionalAttribute.cs
- DbExpressionVisitor.cs
- AttachedAnnotationChangedEventArgs.cs
- XPathBinder.cs
- MetaTableHelper.cs
- Label.cs
- sitestring.cs
- AppDomainAttributes.cs
- AnimationException.cs
- XmlEntityReference.cs
- ToolboxItemCollection.cs
- AutoResizedEvent.cs
- LocatorManager.cs
- ContextConfiguration.cs
- ContractsBCL.cs
- InputScope.cs
- MdiWindowListItemConverter.cs
- EncodingNLS.cs
- FakeModelItemImpl.cs
- WindowsAltTab.cs
- PolicyStatement.cs
- WindowsFormsSynchronizationContext.cs
- ConfigurationStrings.cs
- XmlAttributeOverrides.cs
- MenuStrip.cs
- processwaithandle.cs
- Restrictions.cs
- SoapSchemaImporter.cs
- DataGridCommandEventArgs.cs
- KeyValueConfigurationElement.cs
- EFAssociationProvider.cs
- XmlnsDefinitionAttribute.cs
- SectionXmlInfo.cs
- PageContentAsyncResult.cs
- DtcInterfaces.cs
- DataGridViewImageColumn.cs
- sitestring.cs
- MessageBox.cs
- ZoneMembershipCondition.cs
- HttpDebugHandler.cs
- clipboard.cs
- MediaElement.cs
- DataGridRelationshipRow.cs
- WsrmMessageInfo.cs
- InvalidOperationException.cs
- StorageScalarPropertyMapping.cs
- CheckBoxField.cs
- PathNode.cs
- SafeLibraryHandle.cs
- ObjectDataSourceSelectingEventArgs.cs
- TextElementEditingBehaviorAttribute.cs
- SslStreamSecurityUpgradeProvider.cs
- PageRequestManager.cs
- XPathDocumentNavigator.cs
- FixedDocumentSequencePaginator.cs
- AssociationSetEnd.cs
- TTSVoice.cs
- ChildDocumentBlock.cs
- ConnectionPoolManager.cs
- OperationPickerDialog.cs
- CursorConverter.cs
- ExpandCollapsePattern.cs
- RedirectionProxy.cs
- DesignerSerializationVisibilityAttribute.cs
- LocatorBase.cs
- ValidationError.cs
- ServerValidateEventArgs.cs
- EncodingDataItem.cs
- ExtensionsSection.cs
- DataRowChangeEvent.cs
- ReaderContextStackData.cs
- WebSysDescriptionAttribute.cs
- DemultiplexingClientMessageFormatter.cs
- InvokeMethodActivity.cs
- BitmapEffectRenderDataResource.cs
- CodeTypeOfExpression.cs
- Automation.cs
- GraphicsPath.cs
- CanonicalXml.cs
- UserControl.cs
- MessageQueueException.cs
- Empty.cs
- DateTime.cs
- ObjectKeyFrameCollection.cs
- XXXOnTypeBuilderInstantiation.cs