pub struct ConditionEvaluator { /* private fields */ }
Expand description
Enhanced condition evaluator for processor dispatch
This evaluator extends the basic condition system with processor-specific evaluation capabilities, including data pattern matching, context evaluation, and complex condition expressions.
§ExifTool Reference
ExifTool uses various condition patterns in SubDirectory definitions:
{
Condition => '$$valPt =~ /^0204/',
SubDirectory => { ProcessProc => \&ProcessNikonEncrypted }
},
{
Condition => '$$self{Model} =~ /EOS R5/',
SubDirectory => { ProcessProc => \&ProcessCanonSerialDataMkII }
}
Implementations§
Source§impl ConditionEvaluator
impl ConditionEvaluator
Sourcepub fn evaluate_context_condition(
&mut self,
context: &ProcessorContext,
condition_expr: &str,
) -> Result<bool>
pub fn evaluate_context_condition( &mut self, context: &ProcessorContext, condition_expr: &str, ) -> Result<bool>
Evaluate a condition expression against a processor context
This method parses and evaluates ExifTool-style condition expressions against the provided context, returning true if the condition matches.
§Examples
"$model =~ /EOS R5/"
- Model contains “EOS R5”"$manufacturer eq 'Canon'"
- Exact manufacturer match"exists($serialNumber)"
- Serial number tag is available"$tagID == 0x001d"
- Specific tag ID match
Sourcepub fn evaluate_data_condition(
&mut self,
data: &[u8],
condition_expr: &str,
) -> Result<bool>
pub fn evaluate_data_condition( &mut self, data: &[u8], condition_expr: &str, ) -> Result<bool>
Evaluate a condition against data pattern
This method evaluates conditions that match against binary data patterns, commonly used for format detection and processor selection.
Sourcepub fn evaluate_data_condition_parsed(
&mut self,
data: &[u8],
condition: &Condition,
) -> Result<bool>
pub fn evaluate_data_condition_parsed( &mut self, data: &[u8], condition: &Condition, ) -> Result<bool>
Evaluate a parsed condition against binary data
Sourcepub fn register_tag_evaluator<E: TagEvaluator + 'static>(
&mut self,
name: String,
evaluator: E,
)
pub fn register_tag_evaluator<E: TagEvaluator + 'static>( &mut self, name: String, evaluator: E, )
Register a custom tag evaluator