Switch to hashmark Markdown headers on export

Closes #487
[Markdown Export] deal with linebreaks in jrnl files
[YAML Exporter] apply fix just applied to Markdown Exporter
This commit is contained in:
MinchinWeb 2017-11-13 18:04:24 -07:00
parent 8abbdf4db5
commit e14910c83f
3 changed files with 16 additions and 16 deletions

View file

@ -42,11 +42,9 @@ Feature: Exporting a Journal
When we run "jrnl --export markdown" When we run "jrnl --export markdown"
Then the output should be Then the output should be
""" """
2015 # 2015
====
April ## April
-----
### 2015-04-14 13:23 Heading Test ### 2015-04-14 13:23 Heading Test

View file

@ -3,6 +3,7 @@
from __future__ import absolute_import, unicode_literals, print_function from __future__ import absolute_import, unicode_literals, print_function
from .text_exporter import TextExporter from .text_exporter import TextExporter
import os
import re import re
import sys import sys
from ..util import WARNING_COLOR, RESET_COLOR from ..util import WARNING_COLOR, RESET_COLOR
@ -30,17 +31,17 @@ class MarkdownExporter(TextExporter):
previous_line = '' previous_line = ''
warn_on_heading_level = False warn_on_heading_level = False
for line in body.splitlines(True): for line in body.splitlines(True):
if re.match(r"#+ ", line): if re.match(r"^#+ ", line):
"""ATX style headings""" """ATX style headings"""
newbody = newbody + previous_line + heading + line newbody = newbody + previous_line + heading + line
if re.match(r"#######+ ", heading + line): if re.match(r"^#######+ ", heading + line):
warn_on_heading_level = True warn_on_heading_level = True
line = '' line = ''
elif re.match(r"=+$", line) and not re.match(r"^$", previous_line): elif re.match(r"^=+$", line.rstrip()) and not re.match(r"^$", previous_line.strip()):
"""Setext style H1""" """Setext style H1"""
newbody = newbody + heading + "# " + previous_line newbody = newbody + heading + "# " + previous_line
line = '' line = ''
elif re.match(r"-+$", line) and not re.match(r"^$", previous_line): elif re.match(r"^-+$", line.rstrip()) and not re.match(r"^$", previous_line.strip()):
"""Setext style H2""" """Setext style H2"""
newbody = newbody + heading + "## " + previous_line newbody = newbody + heading + "## " + previous_line
line = '' line = ''
@ -68,12 +69,12 @@ class MarkdownExporter(TextExporter):
for e in journal.entries: for e in journal.entries:
if not e.date.year == year: if not e.date.year == year:
year = e.date.year year = e.date.year
out.append(str(year)) out.append("# " + str(year))
out.append("=" * len(str(year)) + "\n") out.append("")
if not e.date.month == month: if not e.date.month == month:
month = e.date.month month = e.date.month
out.append(e.date.strftime("%B")) out.append("## " + e.date.strftime("%B"))
out.append('-' * len(e.date.strftime("%B")) + "\n") out.append("")
out.append(cls.export_entry(e, False)) out.append(cls.export_entry(e, False))
result = "\n".join(out) result = "\n".join(out)
return result return result

View file

@ -3,6 +3,7 @@
from __future__ import absolute_import, unicode_literals, print_function from __future__ import absolute_import, unicode_literals, print_function
from .text_exporter import TextExporter from .text_exporter import TextExporter
import os
import re import re
import sys import sys
from ..util import WARNING_COLOR, ERROR_COLOR, RESET_COLOR from ..util import WARNING_COLOR, ERROR_COLOR, RESET_COLOR
@ -34,17 +35,17 @@ class YAMLExporter(TextExporter):
previous_line = '' previous_line = ''
warn_on_heading_level = False warn_on_heading_level = False
for line in entry.body.splitlines(True): for line in entry.body.splitlines(True):
if re.match(r"#+ ", line): if re.match(r"^#+ ", line):
"""ATX style headings""" """ATX style headings"""
newbody = newbody + previous_line + heading + line newbody = newbody + previous_line + heading + line
if re.match(r"#######+ ", heading + line): if re.match(r"^#######+ ", heading + line):
warn_on_heading_level = True warn_on_heading_level = True
line = '' line = ''
elif re.match(r"=+$", line) and not re.match(r"^$", previous_line): elif re.match(r"^=+$", line.rstrip()) and not re.match(r"^$", previous_line.strip()):
"""Setext style H1""" """Setext style H1"""
newbody = newbody + heading + "# " + previous_line newbody = newbody + heading + "# " + previous_line
line = '' line = ''
elif re.match(r"-+$", line) and not re.match(r"^$", previous_line): elif re.match(r"^-+$", line.rstrip()) and not re.match(r"^$", previous_line.strip()):
"""Setext style H2""" """Setext style H2"""
newbody = newbody + heading + "## " + previous_line newbody = newbody + heading + "## " + previous_line
line = '' line = ''