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
- CreateParams.cs
- MergablePropertyAttribute.cs
- DbProviderSpecificTypePropertyAttribute.cs
- DirectoryInfo.cs
- AttachedAnnotation.cs
- EventManager.cs
- SqlCacheDependencySection.cs
- QueryCursorEventArgs.cs
- ScriptMethodAttribute.cs
- GridSplitter.cs
- graph.cs
- _emptywebproxy.cs
- BroadcastEventHelper.cs
- TypedMessageConverter.cs
- SystemWebSectionGroup.cs
- RangeValidator.cs
- listitem.cs
- RoleGroupCollection.cs
- DES.cs
- OrderedDictionaryStateHelper.cs
- Int32AnimationBase.cs
- ContractCodeDomInfo.cs
- DeflateEmulationStream.cs
- SystemIPv4InterfaceProperties.cs
- WaitForChangedResult.cs
- HtmlListAdapter.cs
- WorkBatch.cs
- returneventsaver.cs
- TextServicesManager.cs
- XmlSchemaGroupRef.cs
- SqlNotificationEventArgs.cs
- CategoryValueConverter.cs
- Stacktrace.cs
- SymmetricSecurityProtocol.cs
- SmtpNtlmAuthenticationModule.cs
- EasingKeyFrames.cs
- ManagedWndProcTracker.cs
- figurelength.cs
- ToolBarButton.cs
- TrustLevelCollection.cs
- WSHttpBinding.cs
- MultiBinding.cs
- ComponentConverter.cs
- streamingZipPartStream.cs
- ExeContext.cs
- ControlValuePropertyAttribute.cs
- ToolStripManager.cs
- RangeValidator.cs
- BaseConfigurationRecord.cs
- InvalidDataContractException.cs
- InfoCardBaseException.cs
- WebPartConnectionsEventArgs.cs
- StringSorter.cs
- FloaterBaseParagraph.cs
- StrongNamePublicKeyBlob.cs
- Oci.cs
- StorageEntityContainerMapping.cs
- ColorAnimationBase.cs
- UnionCqlBlock.cs
- SafeCryptContextHandle.cs
- ListViewContainer.cs
- AttributeExtensions.cs
- UTF32Encoding.cs
- RegexNode.cs
- RegexCompiler.cs
- AssemblyCollection.cs
- StringAnimationUsingKeyFrames.cs
- WebPartMovingEventArgs.cs
- FlowLayoutSettings.cs
- CodeGeneratorOptions.cs
- DbConnectionClosed.cs
- SchemaNotation.cs
- ToolStripHighContrastRenderer.cs
- ThemeDirectoryCompiler.cs
- _RequestCacheProtocol.cs
- RuleSetDialog.Designer.cs
- ResetableIterator.cs
- DataShape.cs
- IsolatedStorage.cs
- HttpPostProtocolImporter.cs
- Char.cs
- DocumentPageViewAutomationPeer.cs
- TdsParserHelperClasses.cs
- LowerCaseStringConverter.cs
- AssemblyName.cs
- SamlAssertionDirectKeyIdentifierClause.cs
- PersonalizationProviderHelper.cs
- Misc.cs
- WindowsListViewItem.cs
- Collection.cs
- ServiceOperationParameter.cs
- PointF.cs
- FieldDescriptor.cs
- VideoDrawing.cs
- HGlobalSafeHandle.cs
- OdbcInfoMessageEvent.cs
- ResXResourceReader.cs
- Accessible.cs
- ListDictionaryInternal.cs
- SortedSetDebugView.cs