ImportantBaseOperation
extends BaseOperation
in package
Marker subclass: operations that must always evaluate even when a previous operation in the chain raised `RejectOperations`. The `MagicFilter::_resolve` loop checks `important()` after a rejection and only executes operations that opt in via this base.
Mirrors upstream's BaseOperation.important = True class attribute
(see ImportantCombinationOperation, ImportantFunctionOperation in
magic_filter/operations/combination.py, function.py).
Subclasses do not need to override anything else — they just extend
this class instead of BaseOperation and the important() method
inherited from here flips to true.
Table of Contents
Methods
- important() : bool
- `true` for operations that must always evaluate even when an earlier step in the chain raised `RejectOperations`. The canonical example is `~F->message->text` (`ImportantFunctionOperation` wrapping logical NOT): if `text` is missing we want the negation to still flip the `null` result to `true` rather than collapse to `false`.
- resolve() : mixed
- Evaluate this operation.
Methods
important()
`true` for operations that must always evaluate even when an earlier step in the chain raised `RejectOperations`. The canonical example is `~F->message->text` (`ImportantFunctionOperation` wrapping logical NOT): if `text` is missing we want the negation to still flip the `null` result to `true` rather than collapse to `false`.
public
important() : bool
Subclasses opt in by extending ImportantBaseOperation or by
overriding this method directly.
Return values
boolresolve()
Evaluate this operation.
public
abstract resolve(mixed $value, mixed $initialValue) : mixed
Parameters
- $value : mixed
-
The current running value (output of the previous operation, or the original subject for the first step).
- $initialValue : mixed
-
The original subject passed to
MagicFilter::resolve. Used by combinator / comparator operations that need to resolve a nestedMagicFilteragainst the root rather than the current intermediate value.