resolvePath function
Resolves a dot-separated path in a nested JSON-compatible object.
Loest einen Datenpfad wie "report.weather" gegen die uebergebenen Daten auf.
Frueher stand hier eine fest einprogrammierte Liste erlaubter Praefixe (customer, blowingdata, items). Alles andere wurde als schmueckendes Beiwerk betrachtet und WEGGEWORFEN: Aus "report.weather" wurde "weather", und weil es das auf oberster Ebene nicht gibt, kam null zurueck - im Ausdruck blieb dann "{{report.weather}}" woertlich stehen. Jede Vorlage mit einem neuen Praefix war damit stumm.
Jetzt gilt: erst der VOLLE Pfad. Nur wenn der nichts findet, wird das erste Glied versuchsweise weggelassen - so bleiben alte Vorlagen gueltig, in denen das Praefix tatsaechlich schmueckend war.
Implementation
dynamic resolvePath(String path, dynamic data) {
var cleanPath = path.trim();
if (cleanPath.startsWith('.')) {
cleanPath = cleanPath.substring(1).trim();
}
final direkt = _pfadSuchen(cleanPath, data);
if (direkt != null) return direkt;
if (cleanPath.contains('.')) {
return _pfadSuchen(cleanPath.substring(cleanPath.indexOf('.') + 1), data);
}
return null;
}