refactored SearchExpression

This commit is contained in:
2026-09-15 13:18:09 +02:00
parent 1d53f6930a
commit 5b1b8f4ce5
21 changed files with 509 additions and 216 deletions
@@ -3,7 +3,11 @@
public interface ISaveDataFilter
{
public string SearchString { get; }
public ISearchExpression SearchExpression { get; }
/// <summary>
/// Shared between all parsing operations: the query is compiled once and its tree reused.
/// </summary>
public SearchExpressionCompilation SearchExpression { get; }
public void Apply(Dictionary<string, object> data);
}
@@ -6,7 +6,7 @@ namespace ParadoxSaveParser.WebAPI.SaveDataFilters;
public class SaveDataFilterEU4 : ISaveDataFilter
{
public string SearchString { get; }
public ISearchExpression SearchExpression { get; }
public SearchExpressionCompilation SearchExpression { get; }
public SaveDataFilterEU4()
{
@@ -32,7 +32,7 @@ public class SaveDataFilterEU4 : ISaveDataFilter
)
"""
.Replace("\r", "").Replace("\n", "").Replace("\t", "").Replace(" ", "");
SearchExpression = SearchExpressionCompiler.Compile(SearchString);
SearchExpression = new SearchExpressionCompilation(SearchString);
}