write static method
void
write(
- dynamic data,
- String? tag,
- dynamic value
)
Implementation
static void write(dynamic data, String? tag, dynamic value) {
// get segments
DotNotation? segments = DotNotation.fromString(tag);
if (segments == null || segments.isEmpty) return;
// build map segments
for (int i = 0; i < segments.length - 1; i++) {
var property = segments[i];
if (data is Map) {
if (property.offset > 0) {
data = null;
break;
}
if (!data.containsKey(property.name)) data[property.name] = "";
data = data[property.name];
}
if (data is List) {
if (property.offset > data.length) {
data = null;
break;
}
if (property.offset < data.length && property.offset >= 0) {
data = data[property.offset];
}
}
}
// single element list
// added by olajos 16 nov 2023
if (data is List && data.length == 1 && data[0] is Map) {
data = data[0];
}
// write the value
var name = segments.last.name;
if (data is Map) {
data[name] = value;
}
}