MdYamlCodec: Load maps properly

Our MdYamlCodec runs inside an isolate, and send the result back. The
YamlMap data structure doesn't seem to be serializable over an isolate
and gives us an error. Therefore, we should make sure it is a normal
map.
This commit is contained in:
Vishesh Handa
2020-09-03 14:03:49 +02:00
parent d3d04e6df9
commit ddf7345b0d
2 changed files with 34 additions and 3 deletions

View File

@ -91,9 +91,7 @@ class MarkdownYAMLCodec {
if (yamlMap is! Map) {
return map;
}
yamlMap.forEach((key, value) {
map[key] = value;
});
map = _convertMap(yamlMap);
} catch (err) {
Log.d('MarkdownYAMLSerializer::decode("$yamlText") -> ${err.toString()}');
}
@ -125,3 +123,16 @@ class MarkdownYAMLCodec {
return "---\n" + yaml + "---\n";
}
}
LinkedHashMap<String, dynamic> _convertMap(YamlMap yamlMap) {
LinkedHashMap<String, dynamic> map = LinkedHashMap<String, dynamic>();
yamlMap.forEach((key, value) {
if (value is YamlMap) {
value = _convertMap(value);
}
map[key] = value;
});
return map;
}