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
- RemoteX509Token.cs
- ServiceDiscoveryElement.cs
- DropDownHolder.cs
- SingleSelectRootGridEntry.cs
- PngBitmapEncoder.cs
- GridViewDeletedEventArgs.cs
- MergeFilterQuery.cs
- CodeExporter.cs
- ThreadStaticAttribute.cs
- PrintDocument.cs
- TableLayoutSettingsTypeConverter.cs
- IProvider.cs
- XPathNodePointer.cs
- PointAnimation.cs
- AlphabeticalEnumConverter.cs
- CodeAttributeArgument.cs
- XNodeNavigator.cs
- ConfigXmlAttribute.cs
- SmiRequestExecutor.cs
- FocusWithinProperty.cs
- PluralizationServiceUtil.cs
- NotCondition.cs
- ExcCanonicalXml.cs
- AmbientLight.cs
- BinaryFormatter.cs
- RotateTransform.cs
- TreeViewEvent.cs
- DocumentGrid.cs
- LabelEditEvent.cs
- ConfigurationValues.cs
- x509utils.cs
- Operand.cs
- IncrementalReadDecoders.cs
- UnsettableComboBox.cs
- DataPagerFieldItem.cs
- WebFaultClientMessageInspector.cs
- CodeGenerator.cs
- WSSecurityJan2004.cs
- ProxyElement.cs
- Rotation3DKeyFrameCollection.cs
- cookiecollection.cs
- UpdateManifestForBrowserApplication.cs
- IPEndPointCollection.cs
- Image.cs
- XhtmlConformanceSection.cs
- SystemIPInterfaceProperties.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- SqlConnectionHelper.cs
- SchemaCollectionCompiler.cs
- AssemblyName.cs
- AccessibleObject.cs
- InternalConfigRoot.cs
- XmlSerializerAssemblyAttribute.cs
- Graphics.cs
- DataGridViewCellValidatingEventArgs.cs
- HtmlInputSubmit.cs
- _NestedMultipleAsyncResult.cs
- Propagator.cs
- LockedBorderGlyph.cs
- EntityDataSourceWrapperCollection.cs
- WindowsEditBox.cs
- HostExecutionContextManager.cs
- processwaithandle.cs
- PropertyEntry.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- TraceContext.cs
- designeractionbehavior.cs
- NumberSubstitution.cs
- AvtEvent.cs
- ServiceNameElementCollection.cs
- TextEditorCharacters.cs
- PropertyEmitter.cs
- DeclaredTypeElement.cs
- SR.cs
- SelectionEditingBehavior.cs
- FunctionCommandText.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- Component.cs
- GenerateTemporaryTargetAssembly.cs
- DataQuery.cs
- FlowPosition.cs
- SortDescriptionCollection.cs
- CmsInterop.cs
- MasterPageParser.cs
- WorkflowView.cs
- Assert.cs
- CatalogZoneAutoFormat.cs
- ObjectDataSourceDisposingEventArgs.cs
- localization.cs
- PrintPageEvent.cs
- HandleValueEditor.cs
- XmlHierarchicalEnumerable.cs
- NativeObjectSecurity.cs
- PreloadedPackages.cs
- DragCompletedEventArgs.cs
- MsmqIntegrationAppDomainProtocolHandler.cs
- TouchesOverProperty.cs
- StrokeNode.cs
- FrameworkObject.cs
- ConfigurationErrorsException.cs