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
- ConsoleCancelEventArgs.cs
- Soap.cs
- RoleManagerSection.cs
- PersonalizationStateQuery.cs
- TextSearch.cs
- EnumValidator.cs
- PropertyKey.cs
- ProviderConnectionPoint.cs
- DBDataPermissionAttribute.cs
- DiffuseMaterial.cs
- Brushes.cs
- SingleObjectCollection.cs
- XPathConvert.cs
- CornerRadius.cs
- PageTheme.cs
- CmsUtils.cs
- Attributes.cs
- AncestorChangedEventArgs.cs
- CodeLabeledStatement.cs
- JsonMessageEncoderFactory.cs
- DecimalConverter.cs
- TypeConverterAttribute.cs
- CopyOfAction.cs
- MediaElement.cs
- CompositeCollectionView.cs
- SecurityChannel.cs
- SerializationException.cs
- GlobalAclOperationRequirement.cs
- SqlDataSourceFilteringEventArgs.cs
- DragDropManager.cs
- SafeIUnknown.cs
- GridErrorDlg.cs
- DisplayToken.cs
- NameScopePropertyAttribute.cs
- SoapSchemaMember.cs
- DisplayMemberTemplateSelector.cs
- DecoderBestFitFallback.cs
- JavaScriptString.cs
- Win32KeyboardDevice.cs
- NumericExpr.cs
- FigureHelper.cs
- XmlUtf8RawTextWriter.cs
- RegexCaptureCollection.cs
- SqlCacheDependency.cs
- OperationInfo.cs
- GenericPrincipal.cs
- SizeAnimationUsingKeyFrames.cs
- TextBoxBase.cs
- EntityType.cs
- ServiceModelActivity.cs
- TextSelection.cs
- CachedFontFace.cs
- CodeMethodInvokeExpression.cs
- HttpEncoderUtility.cs
- ConstructorBuilder.cs
- PngBitmapEncoder.cs
- querybuilder.cs
- nulltextcontainer.cs
- DataBindingHandlerAttribute.cs
- TrackingMemoryStream.cs
- DocumentViewerBaseAutomationPeer.cs
- BrowserCapabilitiesCompiler.cs
- ServiceDocumentFormatter.cs
- Rotation3DAnimationBase.cs
- GeneratedView.cs
- ContentPosition.cs
- DummyDataSource.cs
- SqlConnectionFactory.cs
- Win32.cs
- OutputCacheProviderCollection.cs
- AttributeCollection.cs
- HideDisabledControlAdapter.cs
- ValueType.cs
- XmlSchemaExternal.cs
- EmptyCollection.cs
- SessionStateUtil.cs
- DependentList.cs
- LineSegment.cs
- ContentType.cs
- PropertyTabChangedEvent.cs
- StyleSelector.cs
- RayMeshGeometry3DHitTestResult.cs
- AdRotator.cs
- FormsAuthenticationModule.cs
- ListControl.cs
- ProxyManager.cs
- RenderingBiasValidation.cs
- OleAutBinder.cs
- RegularExpressionValidator.cs
- RightsManagementResourceHelper.cs
- ConsoleCancelEventArgs.cs
- TreeNodeStyleCollection.cs
- PrintDocument.cs
- TextTreeNode.cs
- MaskedTextProvider.cs
- WindowsComboBox.cs
- ToolStripSplitStackLayout.cs
- FilterException.cs
- ExpressionWriter.cs
- WorkflowItemsPresenter.cs