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
- WorkflowNamespace.cs
- AnnotationHelper.cs
- WebConfigurationHost.cs
- ObjectItemLoadingSessionData.cs
- ImageDrawing.cs
- PersonalizationStateInfoCollection.cs
- Normalization.cs
- PackageStore.cs
- PasswordBox.cs
- OleDbSchemaGuid.cs
- DrawingVisualDrawingContext.cs
- Regex.cs
- WebHttpDispatchOperationSelectorData.cs
- CodeDelegateInvokeExpression.cs
- EncodedStreamFactory.cs
- SqlDataSourceCommandEventArgs.cs
- TraceData.cs
- DataGridViewElement.cs
- TrustSection.cs
- SessionEndingEventArgs.cs
- HtmlTableCellCollection.cs
- NamespaceMapping.cs
- TypographyProperties.cs
- DataGridSortCommandEventArgs.cs
- BuiltInPermissionSets.cs
- PageRanges.cs
- SmiGettersStream.cs
- ManagementScope.cs
- BinaryReader.cs
- ChannelAcceptor.cs
- FontUnit.cs
- MenuStrip.cs
- mactripleDES.cs
- InvalidOperationException.cs
- AnimationException.cs
- ContentPathSegment.cs
- ScriptComponentDescriptor.cs
- Resources.Designer.cs
- FtpRequestCacheValidator.cs
- DeviceContext2.cs
- WindowsTokenRoleProvider.cs
- Help.cs
- DataRelationPropertyDescriptor.cs
- StylusLogic.cs
- BasicExpandProvider.cs
- XamlToRtfParser.cs
- ProjectedSlot.cs
- StringSorter.cs
- FamilyTypeface.cs
- SiteMapDataSource.cs
- AppSettingsSection.cs
- CompositeFontFamily.cs
- NavigationPropertyEmitter.cs
- InvokeBase.cs
- Base64Encoder.cs
- SecurityContext.cs
- JsonFormatReaderGenerator.cs
- HideDisabledControlAdapter.cs
- VisualTreeUtils.cs
- NativeMethods.cs
- CompositeFontParser.cs
- DataGridViewCellFormattingEventArgs.cs
- IPHostEntry.cs
- PathGeometry.cs
- QilXmlReader.cs
- Calendar.cs
- XmlTextEncoder.cs
- ProtocolsSection.cs
- CurrencyManager.cs
- UriSection.cs
- KoreanLunisolarCalendar.cs
- SynchronizedPool.cs
- QuaternionConverter.cs
- MenuItemStyle.cs
- CustomErrorCollection.cs
- CallbackTimeoutsElement.cs
- CheckBoxField.cs
- HttpPostedFile.cs
- BaseValidator.cs
- WhitespaceRuleReader.cs
- CapabilitiesPattern.cs
- ConfigurationPropertyCollection.cs
- HwndTarget.cs
- LineMetrics.cs
- ListManagerBindingsCollection.cs
- SlipBehavior.cs
- Filter.cs
- ZipArchive.cs
- HelpOperationInvoker.cs
- XmlRootAttribute.cs
- ProcessModelInfo.cs
- ScriptHandlerFactory.cs
- XmlTextAttribute.cs
- AudioSignalProblemOccurredEventArgs.cs
- Transaction.cs
- Event.cs
- TemplateFactory.cs
- HelpInfo.cs
- PageParser.cs
- TypeUtils.cs