Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / 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. //------------------------------------------------------------------------------ //// 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
- XmlAttributeAttribute.cs
- XmlSerializationWriter.cs
- Enum.cs
- ReadOnlyDataSourceView.cs
- DataGridViewLayoutData.cs
- Part.cs
- TableProviderWrapper.cs
- FolderBrowserDialog.cs
- ChannelBase.cs
- FormsAuthenticationCredentials.cs
- ResolveCriteria.cs
- ThreadExceptionEvent.cs
- ThaiBuddhistCalendar.cs
- AutoFocusStyle.xaml.cs
- ClientScriptManagerWrapper.cs
- HasCopySemanticsAttribute.cs
- XmlWriterSettings.cs
- ValidatorCollection.cs
- cookiecollection.cs
- SystemWebExtensionsSectionGroup.cs
- TypeTypeConverter.cs
- SHA512Managed.cs
- RequestQueue.cs
- cryptoapiTransform.cs
- PerformanceCountersElement.cs
- WebPartZoneDesigner.cs
- OracleMonthSpan.cs
- RegexWriter.cs
- SqlProvider.cs
- AuthorizationRuleCollection.cs
- HtmlInputHidden.cs
- XPathArrayIterator.cs
- LookupBindingPropertiesAttribute.cs
- BinaryReader.cs
- XmlQueryTypeFactory.cs
- SymbolPair.cs
- DbParameterCollectionHelper.cs
- LinqExpressionNormalizer.cs
- DragCompletedEventArgs.cs
- HtmlInputHidden.cs
- UndoEngine.cs
- Scene3D.cs
- ByteViewer.cs
- TaiwanCalendar.cs
- SoapFormatter.cs
- GridViewHeaderRowPresenter.cs
- CompilerTypeWithParams.cs
- BuildProvider.cs
- NumberSubstitution.cs
- WebServiceHandlerFactory.cs
- TabItem.cs
- DataControlFieldCollection.cs
- DependencyObjectCodeDomSerializer.cs
- followingquery.cs
- ModelUIElement3D.cs
- ThicknessAnimation.cs
- WindowsTokenRoleProvider.cs
- CharEnumerator.cs
- ResourceProperty.cs
- XPathSingletonIterator.cs
- TileBrush.cs
- wpf-etw.cs
- ReflectionServiceProvider.cs
- AllMembershipCondition.cs
- FormViewPagerRow.cs
- LicenseException.cs
- TableCell.cs
- LeaseManager.cs
- IndexedWhereQueryOperator.cs
- JsonEncodingStreamWrapper.cs
- XmlQueryCardinality.cs
- ApplicationInterop.cs
- ValueOfAction.cs
- WorkflowMessageEventArgs.cs
- TextEncodedRawTextWriter.cs
- CodeConditionStatement.cs
- HttpContextServiceHost.cs
- EmptyReadOnlyDictionaryInternal.cs
- _LocalDataStore.cs
- RelativeSource.cs
- TypeSource.cs
- SoapTypeAttribute.cs
- DataGridView.cs
- GacUtil.cs
- BitHelper.cs
- MaskedTextProvider.cs
- AssertValidation.cs
- SqlServices.cs
- PixelFormats.cs
- TargetException.cs
- ObjectListGeneralPage.cs
- EncodingDataItem.cs
- WebControl.cs
- ApplicationInfo.cs
- ZipQueryOperator.cs
- StylusPlugin.cs
- ImageFormatConverter.cs
- BookmarkNameHelper.cs
- CryptoKeySecurity.cs
- ProvideValueServiceProvider.cs