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
- BStrWrapper.cs
- ProvidePropertyAttribute.cs
- Transform3DGroup.cs
- DataGridViewLayoutData.cs
- SimpleBitVector32.cs
- GenericWebPart.cs
- MessageDecoder.cs
- UIHelper.cs
- TriState.cs
- FileUtil.cs
- NavigationProgressEventArgs.cs
- WSFederationHttpSecurityMode.cs
- ToolboxComponentsCreatedEventArgs.cs
- dtdvalidator.cs
- SaveFileDialog.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- ReferencedAssembly.cs
- Nullable.cs
- RoutedEventArgs.cs
- DataSourceCollectionBase.cs
- NativeMethods.cs
- UmAlQuraCalendar.cs
- Vector.cs
- assertwrapper.cs
- TrustSection.cs
- _UriSyntax.cs
- ResponseStream.cs
- DataSourceControlBuilder.cs
- ServiceMemoryGates.cs
- COM2Enum.cs
- StringSorter.cs
- DataBindingList.cs
- ImportCatalogPart.cs
- ShapingEngine.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- TreeNodeCollection.cs
- InvalidEnumArgumentException.cs
- MessageBox.cs
- DependencyObjectType.cs
- DataGridPagerStyle.cs
- ClientApiGenerator.cs
- HandoffBehavior.cs
- HMACRIPEMD160.cs
- ConfigurationException.cs
- AsmxEndpointPickerExtension.cs
- HttpCookiesSection.cs
- DecoderFallback.cs
- LateBoundBitmapDecoder.cs
- WebPartConnectionsCloseVerb.cs
- BaseAsyncResult.cs
- ScriptModule.cs
- COM2IPerPropertyBrowsingHandler.cs
- BuildProviderAppliesToAttribute.cs
- Drawing.cs
- SafeFileMapViewHandle.cs
- DbConvert.cs
- TextTreeInsertUndoUnit.cs
- ConfigurationElement.cs
- XsltFunctions.cs
- WebPartDeleteVerb.cs
- ScrollItemProviderWrapper.cs
- Configuration.cs
- DesignerAutoFormat.cs
- xsdvalidator.cs
- XPathSingletonIterator.cs
- ModelTreeEnumerator.cs
- DataTableClearEvent.cs
- DataObject.cs
- IndexingContentUnit.cs
- List.cs
- MessageBodyMemberAttribute.cs
- ArgumentValidation.cs
- _NegotiateClient.cs
- XsdBuildProvider.cs
- NavigationEventArgs.cs
- FontNamesConverter.cs
- ParameterCollection.cs
- AutomationPatternInfo.cs
- SHA512CryptoServiceProvider.cs
- TextSelectionHighlightLayer.cs
- Int16AnimationUsingKeyFrames.cs
- SqlDataSourceSelectingEventArgs.cs
- StateItem.cs
- ProxyElement.cs
- OutputCacheEntry.cs
- XsdValidatingReader.cs
- SoapMessage.cs
- OleDbConnectionInternal.cs
- FrugalMap.cs
- DataReaderContainer.cs
- QueryCacheEntry.cs
- Validator.cs
- SizeF.cs
- RemoteTokenFactory.cs
- IResourceProvider.cs
- DataRelationCollection.cs
- FixedNode.cs
- DataControlPagerLinkButton.cs
- PrimitiveType.cs
- GeometryValueSerializer.cs