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
- SQLByteStorage.cs
- TraceInternal.cs
- MimeTextImporter.cs
- GAC.cs
- DiagnosticTrace.cs
- Pen.cs
- BitmapEffectInput.cs
- ProcessModule.cs
- DynamicActivityTypeDescriptor.cs
- KeyTime.cs
- ResourceDictionaryCollection.cs
- DataExpression.cs
- oledbmetadatacollectionnames.cs
- InvokeProviderWrapper.cs
- QuaternionAnimation.cs
- SecurityKeyUsage.cs
- IndexedString.cs
- RadioButton.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- PassportAuthentication.cs
- DataGridViewColumnStateChangedEventArgs.cs
- SafeNativeMemoryHandle.cs
- MenuItemStyleCollection.cs
- storagemappingitemcollection.viewdictionary.cs
- SqlDataSourceQueryConverter.cs
- StringResourceManager.cs
- ArcSegment.cs
- NavigationProgressEventArgs.cs
- HttpCacheParams.cs
- RemoteWebConfigurationHostStream.cs
- ResourcesChangeInfo.cs
- EventManager.cs
- webbrowsersite.cs
- ComponentManagerBroker.cs
- WebColorConverter.cs
- ColorConvertedBitmapExtension.cs
- HttpCookie.cs
- BamlResourceSerializer.cs
- CodeDOMProvider.cs
- FaultDescription.cs
- FrameworkElementFactory.cs
- EventWaitHandle.cs
- GeneratedView.cs
- ExceptionHandlers.cs
- GridViewRowCollection.cs
- AssemblyAssociatedContentFileAttribute.cs
- Form.cs
- MemberListBinding.cs
- ReflectionUtil.cs
- SettingsPropertyNotFoundException.cs
- SelectiveScrollingGrid.cs
- TextTreeDeleteContentUndoUnit.cs
- FreezableCollection.cs
- InheritanceAttribute.cs
- SiteMapHierarchicalDataSourceView.cs
- WebBrowserBase.cs
- ReachUIElementCollectionSerializerAsync.cs
- VirtualPathUtility.cs
- complextypematerializer.cs
- SafeRightsManagementQueryHandle.cs
- WindowsClaimSet.cs
- FocusWithinProperty.cs
- PolicyManager.cs
- DispatchWrapper.cs
- BaseProcessor.cs
- MultiView.cs
- ErrorHandler.cs
- LinkGrep.cs
- DataObjectSettingDataEventArgs.cs
- TokenizerHelper.cs
- MILUtilities.cs
- VisualStateGroup.cs
- Tuple.cs
- Span.cs
- HebrewCalendar.cs
- Pen.cs
- DataGridViewBand.cs
- SmiContext.cs
- SynchronizedDispatch.cs
- GZipUtils.cs
- XmlCollation.cs
- SystemEvents.cs
- ObjectViewQueryResultData.cs
- CustomErrorsSection.cs
- OleDbParameterCollection.cs
- ToolStripPanelRenderEventArgs.cs
- SqlBuilder.cs
- ZoneLinkButton.cs
- AutomationPropertyInfo.cs
- AssociatedControlConverter.cs
- TransformValueSerializer.cs
- PolicyAssertionCollection.cs
- Selection.cs
- StorageFunctionMapping.cs
- QilInvokeEarlyBound.cs
- TrackingServices.cs
- ComponentResourceKey.cs
- XamlHttpHandlerFactory.cs
- CodeTryCatchFinallyStatement.cs
- DeobfuscatingStream.cs