From f7aeb3527d6ab38b823eb97e095d9e42b844f872 Mon Sep 17 00:00:00 2001 From: Vishesh Handa Date: Mon, 27 May 2019 10:10:17 +0200 Subject: [PATCH] Handle invalid markdown In these cases we just try to fetch the body the best we can and ignore all the keys. This should give us more info about #4 --- lib/storage/serializers.dart | 16 +++++++++++----- test/serializers_test.dart | 14 ++++++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/lib/storage/serializers.dart b/lib/storage/serializers.dart index ca413c0e..a8721f0c 100644 --- a/lib/storage/serializers.dart +++ b/lib/storage/serializers.dart @@ -26,12 +26,18 @@ class MarkdownYAMLSerializer implements NoteSerializer { Note decode(String str) { if (str.startsWith("---\n")) { var parts = str.split("---\n"); - - var yamlMap = loadYaml(parts[1]); var map = {}; - yamlMap.forEach((key, value) { - map[key] = value; - }); + + try { + var yamlMap = loadYaml(parts[1]); + yamlMap.forEach((key, value) { + map[key] = value; + }); + } catch (err, stack) { + print( + 'MarkdownYAMLSerializer::decode (${parts[1]}) -> ${err.toString()}'); + print(stack.toString()); + } map['body'] = parts[2].trimLeft(); return Note.fromJson(map); diff --git a/test/serializers_test.dart b/test/serializers_test.dart index 7f008166..be414852 100644 --- a/test/serializers_test.dart +++ b/test/serializers_test.dart @@ -31,6 +31,20 @@ void main() { expect(note2, note); }); + test('Markdown Serializer with invalid Markdown', () { + var inputNoteStr = """--- +type +--- + +Alright."""; + + var serializer = MarkdownYAMLSerializer(); + var note = serializer.decode(inputNoteStr); + var actualStr = "Alright."; + + expect(actualStr, note.body); + }); + /* test('Markdown Serializer YAML Order', () { var str = """---