Serializers: Ignore empty yaml metadata

No point giving out a horrible stack trace in this case. This is clearly
not worth an "exception".
This commit is contained in:
Vishesh Handa
2019-05-29 11:00:45 +02:00
parent 7a849ab108
commit 0dc75c4ff4
2 changed files with 23 additions and 8 deletions

View File

@ -27,16 +27,18 @@ class MarkdownYAMLSerializer implements NoteSerializer {
if (str.startsWith("---\n")) { if (str.startsWith("---\n")) {
var parts = str.split("---\n"); var parts = str.split("---\n");
var map = <String, dynamic>{}; var map = <String, dynamic>{};
var yamlText = parts[1].trim();
try { try {
var yamlMap = loadYaml(parts[1]); if (yamlText.isNotEmpty) {
yamlMap.forEach((key, value) { var yamlMap = loadYaml(parts[1]);
map[key] = value; yamlMap.forEach((key, value) {
}); map[key] = value;
} catch (err, stack) { });
}
} catch (err) {
print( print(
'MarkdownYAMLSerializer::decode (${parts[1]}) -> ${err.toString()}'); 'MarkdownYAMLSerializer::decode("$yamlText") -> ${err.toString()}');
print(stack.toString());
} }
map['body'] = parts[2].trimLeft(); map['body'] = parts[2].trimLeft();

View File

@ -31,11 +31,24 @@ void main() {
expect(note2, note); expect(note2, note);
}); });
test('Markdown Serializer with invalid Markdown', () { test('Markdown Serializer with invalid YAML', () {
var inputNoteStr = """--- var inputNoteStr = """---
type type
--- ---
Alright.""";
var serializer = MarkdownYAMLSerializer();
var note = serializer.decode(inputNoteStr);
var actualStr = "Alright.";
expect(actualStr, note.body);
});
test('Markdown Serializer with empty YAML', () {
var inputNoteStr = """---
---
Alright."""; Alright.""";
var serializer = MarkdownYAMLSerializer(); var serializer = MarkdownYAMLSerializer();