diff --git a/lib/storage/serializers.dart b/lib/storage/serializers.dart index a8721f0c..13620d0c 100644 --- a/lib/storage/serializers.dart +++ b/lib/storage/serializers.dart @@ -27,16 +27,18 @@ class MarkdownYAMLSerializer implements NoteSerializer { if (str.startsWith("---\n")) { var parts = str.split("---\n"); var map = {}; + var yamlText = parts[1].trim(); try { - var yamlMap = loadYaml(parts[1]); - yamlMap.forEach((key, value) { - map[key] = value; - }); - } catch (err, stack) { + if (yamlText.isNotEmpty) { + var yamlMap = loadYaml(parts[1]); + yamlMap.forEach((key, value) { + map[key] = value; + }); + } + } catch (err) { print( - 'MarkdownYAMLSerializer::decode (${parts[1]}) -> ${err.toString()}'); - print(stack.toString()); + 'MarkdownYAMLSerializer::decode("$yamlText") -> ${err.toString()}'); } map['body'] = parts[2].trimLeft(); diff --git a/test/serializers_test.dart b/test/serializers_test.dart index be414852..39e650a6 100644 --- a/test/serializers_test.dart +++ b/test/serializers_test.dart @@ -31,11 +31,24 @@ void main() { expect(note2, note); }); - test('Markdown Serializer with invalid Markdown', () { + test('Markdown Serializer with invalid YAML', () { var inputNoteStr = """--- 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."""; var serializer = MarkdownYAMLSerializer();