Skip to content

Commit 2247dd1

Browse files
committed
Support regex in member-type pattern
1 parent e430a55 commit 2247dd1

1 file changed

Lines changed: 28 additions & 9 deletions

File tree

Confuser.Core/Project/Patterns/MemberTypeFunction.cs

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System;
2+
using System.Text;
3+
using System.Text.RegularExpressions;
24
using dnlib.DotNet;
35

46
namespace Confuser.Core.Project.Patterns {
@@ -20,27 +22,44 @@ public override int ArgumentCount {
2022

2123
/// <inheritdoc />
2224
public override object Evaluate(IDnlibDef definition) {
23-
object type = Arguments[0].Evaluate(definition);
25+
string typeRegex = Arguments[0].Evaluate(definition).ToString();
26+
27+
var memberType = new StringBuilder();
2428

2529
if (definition is TypeDef)
26-
return StringComparer.OrdinalIgnoreCase.Compare(type.ToString(), "type") == 0;
30+
memberType.Append("type ");
31+
32+
if (definition is MethodDef) {
33+
memberType.Append("method ");
2734

28-
if (definition is MethodDef)
29-
return StringComparer.OrdinalIgnoreCase.Compare(type.ToString(), "method") == 0;
35+
var method = (MethodDef)definition;
36+
if (method.IsGetter)
37+
memberType.Append("propertym getter ");
38+
else if (method.IsSetter)
39+
memberType.Append("propertym setter ");
40+
else if (method.IsAddOn)
41+
memberType.Append("eventm add ");
42+
else if (method.IsRemoveOn)
43+
memberType.Append("eventm remove ");
44+
else if (method.IsFire)
45+
memberType.Append("eventm fire ");
46+
else if (method.IsOther)
47+
memberType.Append("other ");
48+
}
3049

3150
if (definition is FieldDef)
32-
return StringComparer.OrdinalIgnoreCase.Compare(type.ToString(), "field") == 0;
51+
memberType.Append("field ");
3352

3453
if (definition is PropertyDef)
35-
return StringComparer.OrdinalIgnoreCase.Compare(type.ToString(), "property") == 0;
54+
memberType.Append("property ");
3655

3756
if (definition is EventDef)
38-
return StringComparer.OrdinalIgnoreCase.Compare(type.ToString(), "event") == 0;
57+
memberType.Append("event ");
3958

4059
if (definition is ModuleDef)
41-
return StringComparer.OrdinalIgnoreCase.Compare(type.ToString(), "module") == 0;
60+
memberType.Append("module ");
4261

43-
return false;
62+
return Regex.IsMatch(memberType.ToString(), typeRegex);
4463
}
4564
}
4665
}

0 commit comments

Comments
 (0)