replaceStringJsonPath function
Implementation
String replaceStringJsonPath(String value, Map<String, dynamic> document,
{bool? localized = true}) {
var l1 =
value.replaceAllMapped(RegExp(r'{(.*?)}', caseSensitive: false), (match) {
var x = match.group(1) ?? '';
if (x.isEmpty) return '';
if (x.startsWith(r'$.') || x.startsWith(r'$[')) {
try {
x = x.trim();
final _jsonPath = JsonPath(x);
dynamic elements = _jsonPath.read(document).map((match) => match.value);
dynamic result = elements.length > 0 ? elements.first : '';
if (result is List || result is Map) {
result = jsonEncode(result);
}
var r = result.toString();
return (localized ?? true) ? localizedText(r) : r;
} catch (e) {
return '';
}
}
if (x.startsWith('@')) {
var messageCode = x.substring(1).trim();
return localizedText(messageCode);
}
return match[0] ?? "";
});
return (localized ?? true) ? localizedText(l1) : l1;
}