Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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; } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WindowsTitleBar.cs
- localization.cs
- EnumValidator.cs
- MemberListBinding.cs
- coordinator.cs
- XmlElementCollection.cs
- FontFamilyValueSerializer.cs
- WaitForChangedResult.cs
- sqlinternaltransaction.cs
- odbcmetadatacolumnnames.cs
- DesignerExtenders.cs
- DataPager.cs
- EventSourceCreationData.cs
- ConfigXmlElement.cs
- DocumentGridContextMenu.cs
- FacetChecker.cs
- WindowProviderWrapper.cs
- CompiledRegexRunner.cs
- SqlProvider.cs
- LostFocusEventManager.cs
- TemplateControlBuildProvider.cs
- _KerberosClient.cs
- RoutingExtension.cs
- StrokeNode.cs
- DynamicValueConverter.cs
- DataGridRowEventArgs.cs
- ThumbAutomationPeer.cs
- _OSSOCK.cs
- AssemblySettingAttributes.cs
- QueryLifecycle.cs
- PositiveTimeSpanValidator.cs
- EntityCollection.cs
- CodeMemberEvent.cs
- RegexCompilationInfo.cs
- AttributeCollection.cs
- PrePrepareMethodAttribute.cs
- DataTableMappingCollection.cs
- TemplatePagerField.cs
- WindowsTitleBar.cs
- WorkItem.cs
- PersonalizationStateInfo.cs
- translator.cs
- HostingEnvironment.cs
- EndOfStreamException.cs
- DataServiceContext.cs
- EventTask.cs
- DetailsViewPagerRow.cs
- PcmConverter.cs
- PrintPreviewDialog.cs
- MetaModel.cs
- DesignerHelpers.cs
- CursorInteropHelper.cs
- SizeConverter.cs
- DbConnectionPoolCounters.cs
- WebPartUtil.cs
- Reference.cs
- ZipIOExtraFieldElement.cs
- PrimarySelectionGlyph.cs
- RegexStringValidatorAttribute.cs
- ResXResourceWriter.cs
- MachineSettingsSection.cs
- SystemNetworkInterface.cs
- InitiatorServiceModelSecurityTokenRequirement.cs
- Simplifier.cs
- EdgeModeValidation.cs
- ProxyAttribute.cs
- FixedSOMContainer.cs
- DataGridViewAdvancedBorderStyle.cs
- XmlCharacterData.cs
- IriParsingElement.cs
- Vector3DConverter.cs
- CollectionsUtil.cs
- ActivationProxy.cs
- GeometryGroup.cs
- DBSqlParserColumnCollection.cs
- TextViewElement.cs
- ColumnResizeUndoUnit.cs
- TransformationRules.cs
- StrokeCollection2.cs
- DialogResultConverter.cs
- Transaction.cs
- TrackingStringDictionary.cs
- Typeface.cs
- GeometryCollection.cs
- UnauthorizedAccessException.cs
- SequentialWorkflowHeaderFooter.cs
- UnauthorizedAccessException.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- PolygonHotSpot.cs
- DataMemberFieldConverter.cs
- ComponentFactoryHelpers.cs
- HtmlElement.cs
- ApplicationSecurityInfo.cs
- SendParametersContent.cs
- Parameter.cs
- ToolStripLabel.cs
- BStrWrapper.cs
- FtpWebRequest.cs
- RotationValidation.cs
- SafeEventLogReadHandle.cs