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
- CroppedBitmap.cs
- PrintPreviewDialog.cs
- PartialTrustValidationBehavior.cs
- MenuItem.cs
- FontCacheUtil.cs
- MobileListItemCollection.cs
- XamlInt32CollectionSerializer.cs
- PropertyMappingExceptionEventArgs.cs
- ColumnResizeAdorner.cs
- ConfigXmlReader.cs
- externdll.cs
- ConfigurationSection.cs
- StackBuilderSink.cs
- EdmComplexTypeAttribute.cs
- SwitchAttribute.cs
- SynthesizerStateChangedEventArgs.cs
- ImageCodecInfo.cs
- RoleGroup.cs
- RootBrowserWindowAutomationPeer.cs
- CodeAccessPermission.cs
- StrokeNodeOperations2.cs
- EmbeddedMailObject.cs
- SiteMapSection.cs
- WebDescriptionAttribute.cs
- DataGridViewCellLinkedList.cs
- WebPartMinimizeVerb.cs
- SchemaTypeEmitter.cs
- DbConnectionStringCommon.cs
- RawStylusInput.cs
- NewArrayExpression.cs
- TextParagraphView.cs
- MimePart.cs
- UIAgentInitializationException.cs
- PersistChildrenAttribute.cs
- FormViewPagerRow.cs
- TabPanel.cs
- DataGridViewCellParsingEventArgs.cs
- TabControl.cs
- WebPartEditorOkVerb.cs
- InputGestureCollection.cs
- StorageEntitySetMapping.cs
- activationcontext.cs
- ServiceNameElement.cs
- EntityWithChangeTrackerStrategy.cs
- ConfigurationStrings.cs
- WebScriptClientGenerator.cs
- DataContractSet.cs
- ResXBuildProvider.cs
- ProcessHostFactoryHelper.cs
- HttpInputStream.cs
- DataFormat.cs
- HierarchicalDataSourceControl.cs
- ErrorHandler.cs
- CacheManager.cs
- TraceFilter.cs
- TextClipboardData.cs
- EFAssociationProvider.cs
- PrintingPermissionAttribute.cs
- PersonalizationProviderHelper.cs
- GiveFeedbackEvent.cs
- CompilationUtil.cs
- GenericTypeParameterBuilder.cs
- PathTooLongException.cs
- _ChunkParse.cs
- Internal.cs
- ZipIOLocalFileDataDescriptor.cs
- ListContractAdapter.cs
- Quaternion.cs
- XmlSerializerNamespaces.cs
- DataTableReaderListener.cs
- Graph.cs
- CodeIndexerExpression.cs
- NonParentingControl.cs
- LinqDataSourceHelper.cs
- ArithmeticException.cs
- TypeElement.cs
- ListViewSortEventArgs.cs
- odbcmetadatafactory.cs
- TextHidden.cs
- TextBlock.cs
- ProcessThreadCollection.cs
- XsltInput.cs
- WindowsTab.cs
- TextDecorations.cs
- LinkedResourceCollection.cs
- TextEditorTables.cs
- XPathNodeIterator.cs
- ProfileBuildProvider.cs
- ParserExtension.cs
- CollectionViewSource.cs
- OptionUsage.cs
- HtmlWindow.cs
- TableItemPatternIdentifiers.cs
- FileSecurity.cs
- MemberDescriptor.cs
- CanonicalXml.cs
- FormViewDeletedEventArgs.cs
- DisplayMemberTemplateSelector.cs
- ObsoleteAttribute.cs
- FormViewInsertedEventArgs.cs