Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LocalizationComments.cs
- TreeNode.cs
- MessageQueueAccessControlEntry.cs
- PropertyGeneratedEventArgs.cs
- XPathExpr.cs
- ProfileProvider.cs
- CachedTypeface.cs
- ProgressBar.cs
- RectKeyFrameCollection.cs
- XmlNullResolver.cs
- PixelFormat.cs
- ExtensibleSyndicationObject.cs
- KernelTypeValidation.cs
- Point4DValueSerializer.cs
- WindowsFormsSynchronizationContext.cs
- DocumentPageViewAutomationPeer.cs
- StringBuilder.cs
- EntityProviderFactory.cs
- WorkflowValidationFailedException.cs
- elementinformation.cs
- _TransmitFileOverlappedAsyncResult.cs
- QueryRewriter.cs
- PathSegmentCollection.cs
- RuntimeConfigurationRecord.cs
- DataGridViewToolTip.cs
- TraceContext.cs
- IndependentlyAnimatedPropertyMetadata.cs
- AbstractExpressions.cs
- ListViewEditEventArgs.cs
- RoleBoolean.cs
- LinqDataSourceContextEventArgs.cs
- ApplicationDirectoryMembershipCondition.cs
- ExpressionLink.cs
- Freezable.cs
- Formatter.cs
- FirstMatchCodeGroup.cs
- MembershipSection.cs
- Span.cs
- CredentialCache.cs
- SystemIPv6InterfaceProperties.cs
- CompilationUtil.cs
- SerializerWriterEventHandlers.cs
- DrawingContextDrawingContextWalker.cs
- EventToken.cs
- SelectionProviderWrapper.cs
- SerializationInfo.cs
- IssuanceLicense.cs
- CounterNameConverter.cs
- TextServicesHost.cs
- EncryptedData.cs
- Stream.cs
- ExpressionStringBuilder.cs
- ProfileEventArgs.cs
- CombinedHttpChannel.cs
- MetafileHeader.cs
- Select.cs
- RightsManagementInformation.cs
- BitmapMetadataEnumerator.cs
- CorePropertiesFilter.cs
- Pointer.cs
- Scene3D.cs
- SoapEnumAttribute.cs
- PartitionedStream.cs
- RegionIterator.cs
- TableItemStyle.cs
- SR.cs
- NumericUpDownAcceleration.cs
- DropAnimation.xaml.cs
- MiniLockedBorderGlyph.cs
- DataGridColumnHeaderCollection.cs
- SystemFonts.cs
- HttpServerUtilityWrapper.cs
- DescendantBaseQuery.cs
- XPathNodeList.cs
- OutputWindow.cs
- XmlBinaryWriterSession.cs
- FlowDocumentPageViewerAutomationPeer.cs
- TraceHandlerErrorFormatter.cs
- ViewEventArgs.cs
- ButtonPopupAdapter.cs
- PersonalizationState.cs
- ObjectListCommandEventArgs.cs
- DeviceContext2.cs
- StringPropertyBuilder.cs
- SinglePageViewer.cs
- DescendantBaseQuery.cs
- DoubleStorage.cs
- XmlElementAttribute.cs
- MetadataItem.cs
- SmtpNegotiateAuthenticationModule.cs
- SQLSingle.cs
- RelationshipFixer.cs
- WinEventHandler.cs
- StyleCollectionEditor.cs
- SendingRequestEventArgs.cs
- DictionaryMarkupSerializer.cs
- DesignerDataConnection.cs
- ScrollBarRenderer.cs
- StorageEntityContainerMapping.cs
- TokenizerHelper.cs