| File: src\UsageReport\UsagePattern.cs | Web Access |
| Project: src\arcade\src\Microsoft.DotNet.SourceBuild\tasks\Microsoft.DotNet.SourceBuild.Tasks.csproj (Microsoft.DotNet.SourceBuild.Tasks) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Text.RegularExpressions; using System.Xml.Linq; namespace Microsoft.DotNet.SourceBuild.Tasks.UsageReport { public class UsagePattern { public string IdentityRegex { get; set; } public string IdentityGlob { get; set; } public XElement ToXml() => new XElement( nameof(UsagePattern), IdentityRegex.ToXAttributeIfNotNull(nameof(IdentityRegex)), IdentityGlob.ToXAttributeIfNotNull(nameof(IdentityGlob))); public static UsagePattern Parse(XElement xml) => new UsagePattern { IdentityRegex = xml.Attribute(nameof(IdentityRegex))?.Value, IdentityGlob = xml.Attribute(nameof(IdentityGlob))?.Value }; public Regex CreateRegex() { if (!string.IsNullOrEmpty(IdentityRegex)) { return new Regex(IdentityRegex, RegexOptions.IgnoreCase | RegexOptions.Compiled); } if (!string.IsNullOrEmpty(IdentityGlob)) { // Escape regex characters like '.', but handle '*' as regex '.*'. string regex = Regex.Escape(IdentityGlob).Replace("\\*", ".*"); return new Regex( $"^{regex}$", RegexOptions.IgnoreCase | RegexOptions.Compiled); } return new Regex(""); } } }