Add scoped nested rules #428
Open
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.
Added Scoped Nested Rules Feature
- Wraps a parent almanac with a specific array item context
- Allows conditions inside nested rules to access properties directly on the current array item
- Supports resolvePath() to resolve JSONPath directly on the scoped item
- Falls back to parent almanac for facts not found on the item
- Added isNestedCondition() - detects operator: 'some' with a conditions property
- Added isScopedCondition() - detects path-only conditions (no fact, just path + operator)
- Scoped conditions work inside nested blocks where the "fact" is implicitly the current array item
- Added evaluateNestedCondition() to iterate over array items
- Creates a ScopedAlmanac for each array item and evaluates nested conditions against it
- Short-circuits on first match (returns true as soon as any item matches)
- Threaded currentAlmanac through all evaluation functions (evaluateCondition, all, any, not, realize, etc.)
- Added resolvePath() stub that throws helpful error if path-only conditions are used outside nested context