diff --git a/lib/markdown2.py b/lib/markdown2.py index 22bb8697..bfe9abb5 100755 --- a/lib/markdown2.py +++ b/lib/markdown2.py @@ -371,18 +371,29 @@ def preprocess(self, text): """ return text - # Is metadata if the content starts with '---'-fenced `key: value` + # Is metadata if the content starts with optional '---'-fenced `key: value` # pairs. E.g. (indented for presentation): # --- # foo: bar # another-var: blah blah # --- - _metadata_pat = re.compile("""^---[ \t]*\n((?:[ \t]*[^ \t:]+[ \t]*:[^\n]*\n)+)---[ \t]*\n""") + # # header + # or: + # foo: bar + # another-var: blah blah + # + # # header + + _metadata_pat = re.compile(r""" + ^ + (?:---[\ \t]*\n)? # optional "---" + ((?:[ \t]*[^ \t:]+[\ \t]*:[^\n]*\n)+) # "key: value" pairs + (?:---[ \t]*)? # optional "---" + \n""", + re.VERBOSE + ) def _extract_metadata(self, text): - # fast test - if not text.startswith("---"): - return text match = self._metadata_pat.match(text) if not match: return text diff --git a/test/tm-cases/metadata2.html b/test/tm-cases/metadata2.html new file mode 100644 index 00000000..5b5a3fcf --- /dev/null +++ b/test/tm-cases/metadata2.html @@ -0,0 +1,3 @@ +

The real text

+ +

This should be parsed as before

diff --git a/test/tm-cases/metadata2.metadata b/test/tm-cases/metadata2.metadata new file mode 100644 index 00000000..f6c18a88 --- /dev/null +++ b/test/tm-cases/metadata2.metadata @@ -0,0 +1,7 @@ +{ + "test": "abc", + "leading~space": "is okay", + "And": "some, cvs, data, which, you, must, parse, yourself", + "this-is": "a hyphen test", + "empty": "" +} diff --git a/test/tm-cases/metadata2.opts b/test/tm-cases/metadata2.opts new file mode 100644 index 00000000..04e37532 --- /dev/null +++ b/test/tm-cases/metadata2.opts @@ -0,0 +1 @@ +{"extras": ["metadata"]} diff --git a/test/tm-cases/metadata2.tags b/test/tm-cases/metadata2.tags new file mode 100644 index 00000000..5831ff12 --- /dev/null +++ b/test/tm-cases/metadata2.tags @@ -0,0 +1 @@ +extra metadata issue78 diff --git a/test/tm-cases/metadata2.text b/test/tm-cases/metadata2.text new file mode 100644 index 00000000..676c2faf --- /dev/null +++ b/test/tm-cases/metadata2.text @@ -0,0 +1,9 @@ +test: abc +this-is : a hyphen test + leading~space : is okay + And: some, cvs, data, which, you, must, parse, yourself +empty : + +# The real text + +This should be parsed as before