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
- ServiceOperationParameter.cs
- ControlValuePropertyAttribute.cs
- QilUnary.cs
- AuthStoreRoleProvider.cs
- StylusSystemGestureEventArgs.cs
- TemplateEditingVerb.cs
- SmiContextFactory.cs
- SystemException.cs
- Visual3D.cs
- NeedSkipTokenVisitor.cs
- ToolStripGripRenderEventArgs.cs
- WindowsFormsHelpers.cs
- WebControlsSection.cs
- DataGridViewCellFormattingEventArgs.cs
- WebPartConnectionsDisconnectVerb.cs
- SubclassTypeValidator.cs
- pingexception.cs
- PropertyRecord.cs
- AuthorizationRule.cs
- GridViewCancelEditEventArgs.cs
- TemplateControlParser.cs
- RangeValidator.cs
- PanelStyle.cs
- Propagator.Evaluator.cs
- iisPickupDirectory.cs
- QuotedPairReader.cs
- DesignerLoader.cs
- DefaultValueAttribute.cs
- StylusDevice.cs
- FocusManager.cs
- NetworkStream.cs
- TextMessageEncodingBindingElement.cs
- XmlSerializer.cs
- ObjectTag.cs
- Function.cs
- WindowsListViewSubItem.cs
- RightsManagementEncryptionTransform.cs
- ClientSession.cs
- XmlNamespaceMapping.cs
- XmlDataSourceView.cs
- StateMachineSubscription.cs
- DocumentationServerProtocol.cs
- LessThanOrEqual.cs
- Point3DConverter.cs
- TemplateKey.cs
- ScaleTransform.cs
- WebPartDisplayModeCollection.cs
- ItemCollection.cs
- VirtualPath.cs
- XmlSchemaProviderAttribute.cs
- SkinBuilder.cs
- SimpleType.cs
- WebContext.cs
- WindowsListBox.cs
- DataGridHeaderBorder.cs
- HierarchicalDataBoundControlAdapter.cs
- DBParameter.cs
- XmlNodeWriter.cs
- DataObjectMethodAttribute.cs
- ExtractedStateEntry.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- CapabilitiesState.cs
- XamlTreeBuilderBamlRecordWriter.cs
- CodeExporter.cs
- NameSpaceEvent.cs
- TdsParserSessionPool.cs
- AsyncCompletedEventArgs.cs
- PasswordRecovery.cs
- ScriptControlManager.cs
- ItemCollection.cs
- SystemWebSectionGroup.cs
- GlobalProxySelection.cs
- Pen.cs
- BooleanAnimationUsingKeyFrames.cs
- MenuCommands.cs
- EqualityArray.cs
- AnimationTimeline.cs
- XmlTextReaderImpl.cs
- OracleInternalConnection.cs
- DisplayNameAttribute.cs
- InheritanceUI.cs
- SqlInfoMessageEvent.cs
- SettingsPropertyValueCollection.cs
- EmbeddedMailObjectsCollection.cs
- XmlArrayAttribute.cs
- IISUnsafeMethods.cs
- AsyncCompletedEventArgs.cs
- ThreadInterruptedException.cs
- RegionData.cs
- SymbolPair.cs
- KeyValuePairs.cs
- BindingWorker.cs
- PinnedBufferMemoryStream.cs
- ellipse.cs
- ValidatorCollection.cs
- ContainerControl.cs
- DocumentReference.cs
- PropertyKey.cs
- PolicyValidationException.cs
- MaskDesignerDialog.cs