diff --git a/src/MfGames.Nitride.Temporal.Schedules/NumericalPathSchedule.cs b/src/MfGames.Nitride.Temporal.Schedules/NumericalPathSchedule.cs index 112f2f5..602a5be 100644 --- a/src/MfGames.Nitride.Temporal.Schedules/NumericalPathSchedule.cs +++ b/src/MfGames.Nitride.Temporal.Schedules/NumericalPathSchedule.cs @@ -21,7 +21,7 @@ public partial class NumericalPathSchedule : ISchedule { public NumericalPathSchedule() { - this.PathRegex = new Regex(@"^.*(\d+)"); + this.PathRegex = @"^.*(\d+)"; this.GetPath = entity => entity.Get().ToString(); this.CaptureGroup = 1; this.CaptureOffset = -1; @@ -47,7 +47,7 @@ public partial class NumericalPathSchedule : ISchedule /// /// Gets or sets the regular expression to identify a matching path. /// - public Regex? PathRegex { get; set; } + public string? PathRegex { get; set; } /// /// Gets or sets the period between each matching entity. The period is @@ -83,7 +83,8 @@ public partial class NumericalPathSchedule : ISchedule { // Get the path and match it. string? path = this.GetPath(entity); - Match? match = this.PathRegex?.Match(path) + Regex? regex = this.GetRegex(); + Match? match = regex?.Match(path) ?? throw new NullReferenceException( "PathRegex was not configured for the " + this.GetType().Name @@ -116,12 +117,20 @@ public partial class NumericalPathSchedule : ISchedule /// public virtual bool CanApply(Entity entity) { - string? path = this.GetPath(entity); - bool match = this.PathRegex?.IsMatch(path) ?? false; + string path = this.GetPath(entity); + Regex? regex = this.GetRegex(); + bool match = regex?.IsMatch(path) ?? false; return match; } + public Regex? GetRegex() + { + return this.PathRegex == null + ? null + : new Regex(this.PathRegex); + } + protected virtual Entity Apply( Entity entity, int number, diff --git a/tests/MfGames.Nitride.Temporal.Schedules.Tests/NumericalPathScheduleTests.cs b/tests/MfGames.Nitride.Temporal.Schedules.Tests/NumericalPathScheduleTests.cs index 58cab07..d47ed1d 100644 --- a/tests/MfGames.Nitride.Temporal.Schedules.Tests/NumericalPathScheduleTests.cs +++ b/tests/MfGames.Nitride.Temporal.Schedules.Tests/NumericalPathScheduleTests.cs @@ -47,7 +47,8 @@ public class NumericalPathScheduleTests : TemporalSchedulesTestBase "---", "access: custom", "schedules:", - " - scheduleStart: 2023-01-01", + " - pathRegex: chapter-(\\d+)", + " scheduleStart: 2023-01-01", " access: public", "")); List? schedules = model.Schedules!;