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
- MappingException.cs
- ApplicationServicesHostFactory.cs
- AuthStoreRoleProvider.cs
- ExpandedWrapper.cs
- HtmlLink.cs
- ProcessThread.cs
- RichTextBox.cs
- LeaseManager.cs
- HtmlString.cs
- DBCommandBuilder.cs
- ExpressionPrefixAttribute.cs
- VirtualDirectoryMappingCollection.cs
- ToolStripGripRenderEventArgs.cs
- FeedUtils.cs
- LocalFileSettingsProvider.cs
- ApplicationBuildProvider.cs
- SaveCardRequest.cs
- ArrayWithOffset.cs
- GregorianCalendar.cs
- ClickablePoint.cs
- PolicyManager.cs
- SecurityRuntime.cs
- SqlAliaser.cs
- XmlNamespaceDeclarationsAttribute.cs
- CodeTypeDeclaration.cs
- StringAnimationUsingKeyFrames.cs
- IsolationInterop.cs
- InfoCardRSACryptoProvider.cs
- ObjRef.cs
- WebPartCatalogCloseVerb.cs
- AggregateNode.cs
- TreeNodeCollection.cs
- TextRangeEdit.cs
- HttpCacheParams.cs
- ButtonField.cs
- ToolboxSnapDragDropEventArgs.cs
- StackSpiller.cs
- DataSourceSelectArguments.cs
- DesignerDataSchemaClass.cs
- XXXOnTypeBuilderInstantiation.cs
- TabItemAutomationPeer.cs
- SqlGenericUtil.cs
- HtmlInputButton.cs
- Literal.cs
- ClientTargetCollection.cs
- LazyLoadBehavior.cs
- InstallerTypeAttribute.cs
- LocalizationParserHooks.cs
- Selection.cs
- SqlConnectionPoolGroupProviderInfo.cs
- CookieProtection.cs
- CapabilitiesSection.cs
- ProjectionCamera.cs
- ReferenceCountedObject.cs
- ActionItem.cs
- EmbeddedMailObjectsCollection.cs
- DragDropHelper.cs
- FactoryMaker.cs
- WebBrowserNavigatingEventHandler.cs
- ExpressionNormalizer.cs
- WebPartManager.cs
- DataRelationPropertyDescriptor.cs
- RangeValidator.cs
- Membership.cs
- MissingMethodException.cs
- UInt32Storage.cs
- ClientProxyGenerator.cs
- XmlSchemaAnnotation.cs
- StrokeIntersection.cs
- basevalidator.cs
- ByteStreamGeometryContext.cs
- DataTemplate.cs
- WebPartAuthorizationEventArgs.cs
- NTAccount.cs
- DataServiceHostFactory.cs
- XmlEncodedRawTextWriter.cs
- XPathMessageFilterElement.cs
- DrawingCollection.cs
- Source.cs
- Columns.cs
- AttributeEmitter.cs
- WriteableBitmap.cs
- NavigationPropertyEmitter.cs
- PenContexts.cs
- WebBrowserEvent.cs
- SqlMethodTransformer.cs
- LeaseManager.cs
- ClientUrlResolverWrapper.cs
- MailFileEditor.cs
- ProcessStartInfo.cs
- Mutex.cs
- XmlSchemaSimpleTypeList.cs
- ServiceThrottlingBehavior.cs
- ClientUrlResolverWrapper.cs
- TaskExceptionHolder.cs
- bidPrivateBase.cs
- DbConnectionStringBuilder.cs
- SettingsPropertyIsReadOnlyException.cs
- PermissionAttributes.cs
- ScrollContentPresenter.cs