[12.x] Compilable for Validation Contract #54882
Merged
+54
−22
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes
Rule::compile()
method so it's easier to reuse.No tests added because there's no new logic added. Just refactoring. I don't believe any of the code would be breaking in this situation. The NestedRules class just behaves the same even if someone extended it. I wouldn't expect the RulesParser to be extended but no method signatures have been changed.
Why
NestedRules are great but can't be extended as a class easily without fiddling with the constructor and overloading the compile method while duplicating that logic. This PR seeks to make NestedRules use a contract that developers can use themselves to determine nested rule logic instead of being forced to use a closure.
for instance:
Could become a class like:
This will make it possible for people to implement classes to manage their own nested rules.