SharpGen/Transform/NamingRulesManager.ShortName.cs (35 lines of code) (raw):

using System; using System.Collections.Generic; using System.Text.RegularExpressions; namespace SharpGen.Transform { public sealed partial class NamingRulesManager { private readonly List<ShortNameMapper> _expandShortName = new(); /// <summary> /// Adds the short name rule. /// </summary> /// <param name="regexShortName">Short name of the regex.</param> /// <param name="expandedName">Name of the expanded.</param> public void AddShortNameRule(string regexShortName, string expandedName) { _expandShortName.Add(new ShortNameMapper(regexShortName, expandedName)); _expandShortName.Sort(); } private class ShortNameMapper : IComparable<ShortNameMapper>, IComparable { public ShortNameMapper(string regex, string replace) { Regex = new Regex("^" + regex); Replace = replace; HasRegexReplace = replace.Contains("$"); } public readonly Regex Regex; public readonly string Replace; public readonly bool HasRegexReplace; public int CompareTo(ShortNameMapper other) { return -Regex.ToString().Length.CompareTo((int) other.Regex.ToString().Length); } public int CompareTo(object obj) { return obj is ShortNameMapper mapper ? CompareTo(mapper) : throw new InvalidOperationException(); } } } }