process method
ProcessedArg
process(
- JsonWidgetRegistry registry,
- dynamic arg,
- Set<
String> ? jsonWidgetListenVariables
override
Process passed arg into ProcessedArg.
The registry is giving functions and variables information context for
the processing.
Passed jsonWidgetListenVariables is the information about variables that
JsonWidgetData depends on. Passing that should be make the
ArgProcessor to stop calculating these variable names. It is
treated as a optimization.
ProcessedArg contains info about arg real value and variable names
that it depends on.
Implementation
@override
ProcessedArg process(
JsonWidgetRegistry registry,
dynamic arg,
Set<String>? jsonWidgetListenVariables,
) {
final calculateListenVariables =
jsonWidgetListenVariables == null || jsonWidgetListenVariables.isEmpty;
var resultListenVariables = jsonWidgetListenVariables ?? <String>{};
final regexpMatch = _matchRegexp.firstMatch(arg.toString())!;
final expression = Expression.tryParse(regexpMatch.group(1)!);
if (expression != null) {
final evaluator = ArgsExpressionEvaluator(
registry,
calculateListenVariables,
);
arg = evaluator.evaluate(expression);
if (calculateListenVariables) {
resultListenVariables = evaluator.jsonWidgetListenVariables;
}
}
return ProcessedArg(
jsonWidgetListenVariables: resultListenVariables,
value: arg,
);
}