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
- EventLogException.cs
- CssStyleCollection.cs
- EnumConverter.cs
- SQLDouble.cs
- Help.cs
- Sequence.cs
- xmlsaver.cs
- RegexReplacement.cs
- AutoSizeComboBox.cs
- Color.cs
- Ray3DHitTestResult.cs
- TimelineGroup.cs
- TabItem.cs
- DispatchWrapper.cs
- DataKeyCollection.cs
- TypeProvider.cs
- CodeTypeReferenceExpression.cs
- SkinBuilder.cs
- FtpWebResponse.cs
- BasePattern.cs
- AsymmetricCryptoHandle.cs
- SessionEndingEventArgs.cs
- DataGridViewTextBoxColumn.cs
- TabControl.cs
- ImageMap.cs
- TraceProvider.cs
- ChildTable.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- BitmapDownload.cs
- ClientTargetSection.cs
- Mappings.cs
- PersistenceProviderBehavior.cs
- HttpListenerResponse.cs
- ParameterCollection.cs
- SafeNativeMethods.cs
- UnmanagedMemoryStream.cs
- ConstructorNeedsTagAttribute.cs
- DataGridHeaderBorder.cs
- ArrayHelper.cs
- DataGridViewColumnHeaderCell.cs
- SplitterCancelEvent.cs
- SoapAttributes.cs
- SqlStream.cs
- XmlSchemaDatatype.cs
- DeobfuscatingStream.cs
- ValidateNames.cs
- ValueTypeFixupInfo.cs
- SoapSchemaExporter.cs
- CollectionDataContract.cs
- CommunicationException.cs
- NavigatorInput.cs
- AccessedThroughPropertyAttribute.cs
- MsmqBindingElementBase.cs
- GridViewHeaderRowPresenter.cs
- ViewKeyConstraint.cs
- XamlToRtfWriter.cs
- Size.cs
- SafeFileMapViewHandle.cs
- ToRequest.cs
- FileRecordSequence.cs
- DataSourceProvider.cs
- ToolStripDropDownMenu.cs
- Normalization.cs
- FontDialog.cs
- IsolatedStorageException.cs
- SimpleType.cs
- XmlEnumAttribute.cs
- GeneralTransform.cs
- XmlNodeList.cs
- ItemDragEvent.cs
- ParserStreamGeometryContext.cs
- MenuItemStyleCollection.cs
- basenumberconverter.cs
- JavaScriptString.cs
- CodeGotoStatement.cs
- DataSourceDesigner.cs
- PassportIdentity.cs
- PartialCachingAttribute.cs
- ObjectPropertyMapping.cs
- InvalidateEvent.cs
- Html32TextWriter.cs
- InstalledFontCollection.cs
- NativeObjectSecurity.cs
- FillBehavior.cs
- JavascriptXmlWriterWrapper.cs
- WindowsSolidBrush.cs
- SoundPlayerAction.cs
- CollectionDataContractAttribute.cs
- HtmlForm.cs
- PagesChangedEventArgs.cs
- HttpListenerRequest.cs
- WindowsFormsHostPropertyMap.cs
- ApplicationHost.cs
- UriTemplateTrieLocation.cs
- JoinTreeSlot.cs
- StructuredType.cs
- JsonEnumDataContract.cs
- XmlSchemaAny.cs
- DeclarativeCatalogPart.cs
- ScriptingScriptResourceHandlerSection.cs