Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / 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. //------------------------------------------------------------------------------ //// 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
- CopyOnWriteList.cs
- IndentedWriter.cs
- ProviderConnectionPoint.cs
- SerializationSectionGroup.cs
- PropertySourceInfo.cs
- WsdlInspector.cs
- HandledEventArgs.cs
- SmiSettersStream.cs
- XmlSchemaSimpleTypeUnion.cs
- Ticks.cs
- SwitchAttribute.cs
- FixedSOMPageElement.cs
- XComponentModel.cs
- Function.cs
- Binding.cs
- TextSerializer.cs
- LogSwitch.cs
- ZoneLinkButton.cs
- DataGridViewColumnTypeEditor.cs
- RegistryKey.cs
- XmlNodeWriter.cs
- Rules.cs
- SimpleType.cs
- CheckedPointers.cs
- IssuedSecurityTokenProvider.cs
- InplaceBitmapMetadataWriter.cs
- ExceptionList.cs
- dbdatarecord.cs
- RedirectionProxy.cs
- WizardStepBase.cs
- ProfileGroupSettingsCollection.cs
- Cursors.cs
- EventsTab.cs
- XmlBinaryWriterSession.cs
- XmlSerializerFactory.cs
- Focus.cs
- Container.cs
- XmlCountingReader.cs
- XsltArgumentList.cs
- ApplicationId.cs
- QuotedPrintableStream.cs
- OdbcDataAdapter.cs
- DiscreteKeyFrames.cs
- FontStretch.cs
- Encoder.cs
- XmlReflectionMember.cs
- ExtensionQuery.cs
- HttpFileCollection.cs
- MarshalDirectiveException.cs
- CacheModeValueSerializer.cs
- TableLayoutStyle.cs
- Profiler.cs
- BaseHashHelper.cs
- ActivityInfo.cs
- XmlAggregates.cs
- FontStyleConverter.cs
- GAC.cs
- XmlParserContext.cs
- MenuCommandService.cs
- GetPageCompletedEventArgs.cs
- TypedTableBaseExtensions.cs
- GeometryDrawing.cs
- FormatPage.cs
- CacheMemory.cs
- ClrProviderManifest.cs
- StringCollectionMarkupSerializer.cs
- linebase.cs
- OleDbRowUpdatedEvent.cs
- ImpersonationOption.cs
- DataGridClipboardCellContent.cs
- ContentElementAutomationPeer.cs
- TimeSpanSecondsConverter.cs
- mongolianshape.cs
- HWStack.cs
- MembershipValidatePasswordEventArgs.cs
- Cloud.cs
- DynamicResourceExtension.cs
- QuaternionAnimationBase.cs
- InternalConfigEventArgs.cs
- WinInetCache.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- SoapTypeAttribute.cs
- DataKey.cs
- RelativeSource.cs
- SourceFileBuildProvider.cs
- DeobfuscatingStream.cs
- EventRecordWrittenEventArgs.cs
- EntityWithKeyStrategy.cs
- TableLayoutSettingsTypeConverter.cs
- ClientConfigurationHost.cs
- Math.cs
- ComplexBindingPropertiesAttribute.cs
- TimeSpanValidatorAttribute.cs
- Helper.cs
- _NtlmClient.cs
- TextWriter.cs
- smtppermission.cs
- TextAutomationPeer.cs
- DesignerVerb.cs
- PriorityQueue.cs