Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DNS.cs
- PageWrapper.cs
- AspCompat.cs
- FragmentQueryProcessor.cs
- MarginCollapsingState.cs
- TemplatePagerField.cs
- XmlQueryType.cs
- VisualTarget.cs
- ValuePattern.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- StringAttributeCollection.cs
- MenuItemBinding.cs
- EventMappingSettingsCollection.cs
- NativeMethodsOther.cs
- CodeDirectionExpression.cs
- StylusSystemGestureEventArgs.cs
- PermissionListSet.cs
- LongValidator.cs
- StylusPointCollection.cs
- TextParagraphCache.cs
- CompilerGeneratedAttribute.cs
- WebPartCloseVerb.cs
- UnauthorizedWebPart.cs
- IssuedTokenServiceElement.cs
- StorageAssociationSetMapping.cs
- ProgressBarRenderer.cs
- TextWriter.cs
- HtmlMeta.cs
- _ServiceNameStore.cs
- LogSwitch.cs
- MetaTableHelper.cs
- ListViewPagedDataSource.cs
- EntryIndex.cs
- TripleDESCryptoServiceProvider.cs
- FormViewRow.cs
- Util.cs
- BoolExpression.cs
- ToolStripControlHost.cs
- TemplateBuilder.cs
- RenderContext.cs
- securitycriticaldataformultiplegetandset.cs
- TextOnlyOutput.cs
- LoginName.cs
- TagPrefixAttribute.cs
- HashCryptoHandle.cs
- ProfileEventArgs.cs
- InfoCardSymmetricCrypto.cs
- TableHeaderCell.cs
- TypeToken.cs
- KoreanLunisolarCalendar.cs
- SyntaxCheck.cs
- EllipseGeometry.cs
- ITextView.cs
- filewebresponse.cs
- SafeCryptContextHandle.cs
- LinkTarget.cs
- DataGridCellsPanel.cs
- ValueQuery.cs
- SqlDependency.cs
- TypeBuilder.cs
- SHA512Cng.cs
- ToolstripProfessionalRenderer.cs
- PreviewPrintController.cs
- URLIdentityPermission.cs
- TextOnlyOutput.cs
- TextTreeInsertElementUndoUnit.cs
- ResourceDisplayNameAttribute.cs
- GZipStream.cs
- CurrencyWrapper.cs
- ToolStripAdornerWindowService.cs
- LZCodec.cs
- ArgumentDesigner.xaml.cs
- TreeNodeCollection.cs
- PartialCachingControl.cs
- Substitution.cs
- GatewayDefinition.cs
- SafeUserTokenHandle.cs
- Internal.cs
- PeerCustomResolverBindingElement.cs
- ScriptHandlerFactory.cs
- VectorAnimationUsingKeyFrames.cs
- IdentityHolder.cs
- ObjectNavigationPropertyMapping.cs
- WmpBitmapEncoder.cs
- MergeFilterQuery.cs
- _ScatterGatherBuffers.cs
- DetailsViewModeEventArgs.cs
- SamlSecurityToken.cs
- DataRow.cs
- CodeExpressionCollection.cs
- CompiledRegexRunnerFactory.cs
- SerializationHelper.cs
- EmptyStringExpandableObjectConverter.cs
- OleDbReferenceCollection.cs
- safelink.cs
- HostProtectionPermission.cs
- Model3DGroup.cs
- SetterBase.cs
- BitStack.cs
- ValueQuery.cs