replaceStringTemplate function
Implementation
String replaceStringTemplate(String value, Map<String, dynamic> data) {
return value.replaceAllMapped(RegExp(r'{(.*?)}', caseSensitive: false),
(match) {
var x = match.group(1) ?? '';
if (x.isEmpty) return '';
x = x.trim();
if (!x.startsWith('\$.')) {
if (data.containsKey(x)) {
return data[x].toString();
}
return '';
}
var parts = x.substring(2).split('.');
var currentMap = data;
for (var part in parts) {
if (!currentMap.containsKey(part)) {
return '';
}
var m = currentMap[part];
if (!(m is Map<String, dynamic>)) {
return m;
}
currentMap = m;
}
return '';
});
/*for (String k in data.keys) {
if (data[k] is String) {
value = value.replaceAll('{$k}', data[k]!);
} else if (data[k] is Map) {
Map subData = data[k];
for (String sk in subData.keys) {
String replaceString = '{$.$k.$sk}';
value = value.replaceAll(replaceString, subData[sk].toString());
}
}
}
return value;*/
}