Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / Configuration / RegexWorker.cs / 5 / 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. // //----------------------------------------------------------------------------- /* * 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebBrowsableAttribute.cs
- UniqueSet.cs
- DoubleUtil.cs
- DifferencingCollection.cs
- TraceXPathNavigator.cs
- CriticalFinalizerObject.cs
- EntityRecordInfo.cs
- ForwardPositionQuery.cs
- JournalNavigationScope.cs
- GeometryHitTestParameters.cs
- Timer.cs
- TimerEventSubscriptionCollection.cs
- TypeInformation.cs
- BaseCollection.cs
- PrivilegeNotHeldException.cs
- DesignerForm.cs
- EntityType.cs
- dataprotectionpermission.cs
- ErrorFormatter.cs
- SyndicationElementExtensionCollection.cs
- SimpleMailWebEventProvider.cs
- CheckBoxField.cs
- SoapCommonClasses.cs
- WebResponse.cs
- PipeStream.cs
- TextEmbeddedObject.cs
- ZoneButton.cs
- SoapAttributeAttribute.cs
- BaseTransportHeaders.cs
- BigInt.cs
- DrawingContext.cs
- GridViewDeletedEventArgs.cs
- versioninfo.cs
- ArgumentException.cs
- BamlResourceSerializer.cs
- AttributeSetAction.cs
- GridViewRow.cs
- FormsAuthenticationConfiguration.cs
- TraceHandler.cs
- ServiceDurableInstance.cs
- RuntimeConfig.cs
- StyleBamlTreeBuilder.cs
- EntityDataSourceValidationException.cs
- TreeChangeInfo.cs
- XmlCDATASection.cs
- ExtendedPropertiesHandler.cs
- OSFeature.cs
- bindurihelper.cs
- SafeWaitHandle.cs
- TemplatedWizardStep.cs
- SubMenuStyleCollection.cs
- TCEAdapterGenerator.cs
- TextFormatterImp.cs
- NativeRightsManagementAPIsStructures.cs
- ToolboxBitmapAttribute.cs
- DocumentPageViewAutomationPeer.cs
- WorkingDirectoryEditor.cs
- _ChunkParse.cs
- ClassHandlersStore.cs
- loginstatus.cs
- DatePickerAutomationPeer.cs
- BmpBitmapDecoder.cs
- SmtpException.cs
- HwndHost.cs
- PersistenceMetadataNamespace.cs
- ProgressBar.cs
- APCustomTypeDescriptor.cs
- ProxyHwnd.cs
- DelegatingTypeDescriptionProvider.cs
- LoginAutoFormat.cs
- EventlogProvider.cs
- UniqueIdentifierService.cs
- FlowDocumentScrollViewer.cs
- SerializationAttributes.cs
- MenuBase.cs
- TcpClientSocketManager.cs
- HttpProcessUtility.cs
- SafeNativeMethodsOther.cs
- SqlInternalConnectionSmi.cs
- StackBuilderSink.cs
- StylusEventArgs.cs
- ColorMatrix.cs
- ProxyGenerationError.cs
- HMAC.cs
- NCryptNative.cs
- StructureChangedEventArgs.cs
- ClickablePoint.cs
- MergeFailedEvent.cs
- SqlDataReaderSmi.cs
- EdmToObjectNamespaceMap.cs
- MultiDataTrigger.cs
- SoundPlayerAction.cs
- AssemblyUtil.cs
- CodeCatchClauseCollection.cs
- CommonEndpointBehaviorElement.cs
- DataGridViewToolTip.cs
- DataObjectAttribute.cs
- RemoteWebConfigurationHost.cs
- WebPartUserCapability.cs
- PropertyGridEditorPart.cs