Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- GraphicsContext.cs
- SamlAssertionKeyIdentifierClause.cs
- RuntimeTransactionHandle.cs
- BinaryObjectReader.cs
- ScriptingWebServicesSectionGroup.cs
- LateBoundBitmapDecoder.cs
- HttpApplication.cs
- Regex.cs
- SmtpMail.cs
- SerializationFieldInfo.cs
- ControlEvent.cs
- EventHandlerList.cs
- DetailsViewPagerRow.cs
- Ref.cs
- CacheModeValueSerializer.cs
- ServiceHostingEnvironment.cs
- IntegerValidatorAttribute.cs
- DesignSurfaceCollection.cs
- _CookieModule.cs
- StoreItemCollection.Loader.cs
- FixedFlowMap.cs
- XmlFormatWriterGenerator.cs
- TemplateColumn.cs
- ZoomComboBox.cs
- CommunicationObjectFaultedException.cs
- HtmlTernaryTree.cs
- TransformerTypeCollection.cs
- DrawingDrawingContext.cs
- MemberMaps.cs
- CharAnimationBase.cs
- safemediahandle.cs
- ApplicationInfo.cs
- Crc32.cs
- GlobalItem.cs
- IdentifierService.cs
- InkCanvas.cs
- ToggleProviderWrapper.cs
- ScrollChrome.cs
- DictionaryContent.cs
- ColumnMap.cs
- HttpProtocolImporter.cs
- Popup.cs
- DependencyPropertyConverter.cs
- PtsContext.cs
- EventMappingSettingsCollection.cs
- WindowsFont.cs
- Bitmap.cs
- UserControl.cs
- Decoder.cs
- SymmetricSecurityBindingElement.cs
- URLAttribute.cs
- WindowsSlider.cs
- HttpChannelBindingToken.cs
- DocumentSchemaValidator.cs
- EventLogEntryCollection.cs
- OverflowException.cs
- MdImport.cs
- PositiveTimeSpanValidatorAttribute.cs
- ScopedKnownTypes.cs
- ParserExtension.cs
- AsyncInvokeContext.cs
- AsymmetricKeyExchangeFormatter.cs
- XMLDiffLoader.cs
- FormCollection.cs
- OleDbCommand.cs
- DesignerValidatorAdapter.cs
- _AutoWebProxyScriptHelper.cs
- RegexWriter.cs
- SubordinateTransaction.cs
- BuildProvidersCompiler.cs
- Window.cs
- ResourceLoader.cs
- XamlToRtfParser.cs
- LongAverageAggregationOperator.cs
- DateTimeSerializationSection.cs
- ConfigXmlSignificantWhitespace.cs
- SubqueryRules.cs
- SiteMapSection.cs
- GlyphRunDrawing.cs
- COM2EnumConverter.cs
- TraceRecord.cs
- OneToOneMappingSerializer.cs
- XmlSchemaNotation.cs
- DataBindingHandlerAttribute.cs
- Currency.cs
- basecomparevalidator.cs
- WebPartMenu.cs
- cache.cs
- TableItemPattern.cs
- SecurityPermission.cs
- XmlSignatureManifest.cs
- SymmetricKeyWrap.cs
- Repeater.cs
- EncodingTable.cs
- DataGridViewCell.cs
- SchemaImporterExtensionsSection.cs
- EventMemberCodeDomSerializer.cs
- UnsignedPublishLicense.cs
- OracleCommandBuilder.cs
- InstancePersistenceCommand.cs