Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / Configuration / RegexWorker.cs / 5 / 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. // //----------------------------------------------------------------------------- /* * 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- _Rfc2616CacheValidators.cs
- SplineQuaternionKeyFrame.cs
- LicenseManager.cs
- ConfigurationStrings.cs
- ConfigurationStrings.cs
- OdbcException.cs
- ControlValuePropertyAttribute.cs
- RadialGradientBrush.cs
- RewritingPass.cs
- DurableMessageDispatchInspector.cs
- MaxMessageSizeStream.cs
- RoleService.cs
- DataColumnSelectionConverter.cs
- AppDomainManager.cs
- SiblingIterators.cs
- TransactionFlowOption.cs
- DNS.cs
- DtdParser.cs
- COM2Enum.cs
- XmlNodeChangedEventArgs.cs
- DesignerAutoFormatStyle.cs
- InternalBase.cs
- DiagnosticSection.cs
- InitializationEventAttribute.cs
- _TransmitFileOverlappedAsyncResult.cs
- ByteStack.cs
- DataListItemEventArgs.cs
- Frame.cs
- ProfilePropertySettingsCollection.cs
- RequestNavigateEventArgs.cs
- SafeHandles.cs
- CheckableControlBaseAdapter.cs
- Pkcs9Attribute.cs
- PieceDirectory.cs
- PartialTrustVisibleAssembliesSection.cs
- EnumMember.cs
- _NestedMultipleAsyncResult.cs
- OletxTransactionHeader.cs
- SamlSecurityToken.cs
- SharedStatics.cs
- ColumnReorderedEventArgs.cs
- AVElementHelper.cs
- EventOpcode.cs
- PluralizationService.cs
- DataGridViewCellStyleConverter.cs
- SecurityDocument.cs
- Matrix3DValueSerializer.cs
- GroupLabel.cs
- QueryAccessibilityHelpEvent.cs
- DocumentPageHost.cs
- ReflectionPermission.cs
- FeatureSupport.cs
- AuthenticationModulesSection.cs
- BuilderInfo.cs
- Directory.cs
- WebPartTracker.cs
- XmlDataSource.cs
- RewritingValidator.cs
- ServerValidateEventArgs.cs
- Attribute.cs
- GenericArgumentsUpdater.cs
- __ConsoleStream.cs
- WebContext.cs
- ConfigurationManagerHelperFactory.cs
- ParallelRangeManager.cs
- ServiceDesigner.xaml.cs
- ZipIOModeEnforcingStream.cs
- Region.cs
- WhitespaceRuleLookup.cs
- EdmToObjectNamespaceMap.cs
- linebase.cs
- WindowsSlider.cs
- ColorMap.cs
- CleanUpVirtualizedItemEventArgs.cs
- XmlTextReaderImpl.cs
- WasAdminWrapper.cs
- SHA1CryptoServiceProvider.cs
- AnonymousIdentificationSection.cs
- GlyphingCache.cs
- EventLogPermissionEntry.cs
- XsdValidatingReader.cs
- OdbcCommandBuilder.cs
- VideoDrawing.cs
- JumpTask.cs
- PtsHost.cs
- View.cs
- RemoteTokenFactory.cs
- TakeQueryOptionExpression.cs
- DbConnectionPool.cs
- TargetParameterCountException.cs
- Transform.cs
- InkCanvasInnerCanvas.cs
- WebPartUtil.cs
- IdentityManager.cs
- PopupEventArgs.cs
- EmptyImpersonationContext.cs
- activationcontext.cs
- SplitterEvent.cs
- PerformanceCounters.cs
- DbExpressionVisitor_TResultType.cs