collectVariables function
Collects all variable definitions from map by scanning for (variables)
sections at every nesting level. Later definitions override earlier ones.
Implementation
Map<String, String> collectVariables(JsonMap map) {
final result = <String, String>{};
final metaPattern = RegExp(r'^\(\w+\)$');
for (final key in map.keys) {
if (key == variablesDefinitionKey) {
final vars = map[key];
if (vars is Map) {
vars.forEach((k, v) {
if (v != null) result[k.toString()] = v.toString();
});
}
continue;
}
if (metaPattern.hasMatch(key)) continue;
final value = map[key];
if (value is Map) {
final nested = value.map((k, v) => MapEntry(k.toString(), v)).cast<String, dynamic>();
result.addAll(collectVariables(nested));
}
}
return result;
}