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
- RSAPKCS1SignatureFormatter.cs
- shaperfactory.cs
- DeferredBinaryDeserializerExtension.cs
- SafeSystemMetrics.cs
- SHA384Managed.cs
- StaticExtension.cs
- ProviderSettings.cs
- CommandDesigner.cs
- ScaleTransform.cs
- CompilationUtil.cs
- UseManagedPresentationElement.cs
- InfoCardBaseException.cs
- CatalogZoneBase.cs
- CngKey.cs
- MemberAccessException.cs
- SessionEndedEventArgs.cs
- DataTableMapping.cs
- BasicCellRelation.cs
- RequestTimeoutManager.cs
- AccessorTable.cs
- ConnectionPointConverter.cs
- TextEndOfParagraph.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- MulticastOption.cs
- PropertyGridView.cs
- CodeTypeConstructor.cs
- XhtmlConformanceSection.cs
- DocumentApplicationJournalEntry.cs
- filewebresponse.cs
- CssStyleCollection.cs
- Int32Rect.cs
- AmbientValueAttribute.cs
- RequestCacheManager.cs
- ShaperBuffers.cs
- FragmentQueryKB.cs
- CounterSetInstance.cs
- TableCell.cs
- X509Utils.cs
- StrongNamePublicKeyBlob.cs
- handlecollector.cs
- EncoderBestFitFallback.cs
- RijndaelManaged.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- TriState.cs
- SymDocumentType.cs
- ExternalException.cs
- XmlSchemaAttributeGroupRef.cs
- ListViewUpdatedEventArgs.cs
- MessageQuerySet.cs
- StylusButtonCollection.cs
- Byte.cs
- CryptoStream.cs
- MobileControlBuilder.cs
- BreakRecordTable.cs
- smtppermission.cs
- SectionUpdates.cs
- ColorIndependentAnimationStorage.cs
- DefaultValueAttribute.cs
- TableLayoutPanel.cs
- HwndStylusInputProvider.cs
- XAMLParseException.cs
- Vector.cs
- CompilationSection.cs
- EntityObject.cs
- IApplicationTrustManager.cs
- PersistChildrenAttribute.cs
- LoginViewDesigner.cs
- ItemsControl.cs
- RewritingPass.cs
- XmlEntity.cs
- DBCSCodePageEncoding.cs
- QueryContinueDragEventArgs.cs
- SupportingTokenSpecification.cs
- entitydatasourceentitysetnameconverter.cs
- UserControlDocumentDesigner.cs
- TraceContextEventArgs.cs
- XsdBuildProvider.cs
- TypeDescriptionProvider.cs
- UserControlCodeDomTreeGenerator.cs
- PropVariant.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- FontWeights.cs
- ProcessHostFactoryHelper.cs
- RealProxy.cs
- URL.cs
- DispatcherFrame.cs
- MailAddressCollection.cs
- XmlAttributeHolder.cs
- InvalidAsynchronousStateException.cs
- ReaderContextStackData.cs
- ToolStripGrip.cs
- XmlSchemaAnnotated.cs
- figurelength.cs
- Queue.cs
- TextTreeTextBlock.cs
- QueryOperatorEnumerator.cs
- OptimalBreakSession.cs
- ListDataHelper.cs
- COM2AboutBoxPropertyDescriptor.cs
- RegionData.cs