Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / xsp / System / Web / Configuration / RegexWorker.cs / 1 / 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
- XmlSiteMapProvider.cs
- TableLayout.cs
- PingOptions.cs
- OSFeature.cs
- TextRunProperties.cs
- SqlNotificationRequest.cs
- remotingproxy.cs
- PeerTransportBindingElement.cs
- WindowsSolidBrush.cs
- EdmValidator.cs
- Bits.cs
- StrongNameIdentityPermission.cs
- RemoveStoryboard.cs
- GenerateTemporaryTargetAssembly.cs
- StylusPointProperty.cs
- Attributes.cs
- DoWorkEventArgs.cs
- PropertyTab.cs
- SQLByte.cs
- XmlArrayItemAttributes.cs
- SqlDataSourceTableQuery.cs
- basecomparevalidator.cs
- TextPointer.cs
- PerspectiveCamera.cs
- EndpointConfigContainer.cs
- RegexTree.cs
- DeferredElementTreeState.cs
- _Connection.cs
- HttpConfigurationSystem.cs
- ComboBox.cs
- IndicCharClassifier.cs
- PagedDataSource.cs
- ArgumentsParser.cs
- StreamingContext.cs
- SqlGenerator.cs
- UserControl.cs
- IdleTimeoutMonitor.cs
- HtmlTableRowCollection.cs
- State.cs
- DataGridViewIntLinkedList.cs
- ListViewItem.cs
- RtfControlWordInfo.cs
- HttpListenerResponse.cs
- UnsafeNativeMethods.cs
- Zone.cs
- SByteStorage.cs
- SchemaConstraints.cs
- _NegoState.cs
- PropertyChangedEventArgs.cs
- SettingsPropertyIsReadOnlyException.cs
- FixedPosition.cs
- XmlWriterSettings.cs
- GPStream.cs
- IntegrationExceptionEventArgs.cs
- VerificationException.cs
- SymLanguageType.cs
- ContextStaticAttribute.cs
- ColorConvertedBitmap.cs
- safelinkcollection.cs
- DataTransferEventArgs.cs
- NativeMethods.cs
- DeobfuscatingStream.cs
- WindowsListViewItem.cs
- GridViewColumnHeaderAutomationPeer.cs
- SkipStoryboardToFill.cs
- baseaxisquery.cs
- XmlCodeExporter.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- SqlNode.cs
- QilBinary.cs
- HistoryEventArgs.cs
- SqlNotificationRequest.cs
- InvalidPropValue.cs
- HttpPostClientProtocol.cs
- ItemDragEvent.cs
- HttpCacheParams.cs
- DataColumnCollection.cs
- _SslStream.cs
- DataGridViewRowsAddedEventArgs.cs
- HtmlTableRowCollection.cs
- ConsoleKeyInfo.cs
- XmlEnumAttribute.cs
- LocalizedNameDescriptionPair.cs
- OrderedEnumerableRowCollection.cs
- AppDomainProtocolHandler.cs
- DiscriminatorMap.cs
- QilList.cs
- BmpBitmapEncoder.cs
- FtpWebRequest.cs
- CustomErrorsSection.cs
- IPAddressCollection.cs
- NameTable.cs
- ElementProxy.cs
- itemelement.cs
- PolyBezierSegment.cs
- OrderedHashRepartitionEnumerator.cs
- FormattedText.cs
- Speller.cs
- PeerNameResolver.cs
- cookieexception.cs