Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OrderPreservingMergeHelper.cs
- EntitySetBase.cs
- ParserOptions.cs
- SafeFileMappingHandle.cs
- RolePrincipal.cs
- DelimitedListTraceListener.cs
- InputReport.cs
- Int32Rect.cs
- XmlSchemaExporter.cs
- EmptyCollection.cs
- TypefaceMetricsCache.cs
- GroupDescription.cs
- InheritedPropertyDescriptor.cs
- OdbcInfoMessageEvent.cs
- XamlReader.cs
- ResourceReferenceExpression.cs
- StorageAssociationTypeMapping.cs
- Separator.cs
- SmtpAuthenticationManager.cs
- FormsAuthenticationCredentials.cs
- Tablet.cs
- DesignerCategoryAttribute.cs
- CorePropertiesFilter.cs
- HttpInputStream.cs
- ProfileInfo.cs
- TextBreakpoint.cs
- ChineseLunisolarCalendar.cs
- GeneralTransformGroup.cs
- PropertyAccessVisitor.cs
- ImageButton.cs
- EntityCollection.cs
- TypeValidationEventArgs.cs
- RowTypePropertyElement.cs
- Update.cs
- SessionEndingEventArgs.cs
- ToolStripScrollButton.cs
- LoadedOrUnloadedOperation.cs
- PublisherMembershipCondition.cs
- ClientBuildManagerCallback.cs
- FilterElement.cs
- RadioButtonAutomationPeer.cs
- SymbolPair.cs
- CalloutQueueItem.cs
- GreaterThan.cs
- CultureTable.cs
- OleDbTransaction.cs
- StructuralObject.cs
- GridViewUpdateEventArgs.cs
- XmlCDATASection.cs
- BitmapPalette.cs
- FloaterBaseParagraph.cs
- DataGridViewComboBoxColumn.cs
- DeclarationUpdate.cs
- WebPartConnectionsCancelEventArgs.cs
- SecurityTokenValidationException.cs
- FixedSOMGroup.cs
- sitestring.cs
- COM2PropertyDescriptor.cs
- Point3DAnimation.cs
- HierarchicalDataBoundControlAdapter.cs
- DisableDpiAwarenessAttribute.cs
- DummyDataSource.cs
- TabPageDesigner.cs
- HyperLinkDesigner.cs
- WindowsIdentity.cs
- BaseTreeIterator.cs
- CodeIndexerExpression.cs
- RefreshPropertiesAttribute.cs
- FocusTracker.cs
- Debug.cs
- BooleanAnimationBase.cs
- ChannelSinkStacks.cs
- CodeExpressionRuleDeclaration.cs
- BinaryMessageEncodingBindingElement.cs
- WebServiceData.cs
- MtomMessageEncodingElement.cs
- GenericTransactionFlowAttribute.cs
- ObjectItemAttributeAssemblyLoader.cs
- TracedNativeMethods.cs
- NetCodeGroup.cs
- MessagingDescriptionAttribute.cs
- WorkflowDesignerColors.cs
- TemplateNameScope.cs
- HtmlTitle.cs
- MenuEventArgs.cs
- MaskedTextBox.cs
- XmlRootAttribute.cs
- _UncName.cs
- AnimatedTypeHelpers.cs
- ProxyAttribute.cs
- ConfigurationManagerHelperFactory.cs
- MouseButton.cs
- InstanceKey.cs
- MobileControlPersister.cs
- CultureData.cs
- TextEditorTyping.cs
- SR.Designer.cs
- UInt32Converter.cs
- ConnectionPoolManager.cs
- QuaternionAnimation.cs