diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e2d232..4b2e036 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ * Update icon again to remove background * Adjust History icon and reorder toolbar items * Try to address checkbox/bullet size issues (again) + * Fix HTML export of markdown (with newlines, tables and other styling preserved) # 0.5.1 diff --git a/bouquin/db.py b/bouquin/db.py index d6211f5..ba6b6ce 100644 --- a/bouquin/db.py +++ b/bouquin/db.py @@ -5,6 +5,7 @@ import datetime as _dt import hashlib import html import json +import markdown import re from dataclasses import dataclass @@ -440,14 +441,33 @@ class DBManager: '', '', f"{html.escape(title)}", - "", + "", "", f"

{html.escape(title)}

", ] for d, c in entries: + body_html = markdown.markdown( + c, + extensions=[ + "extra", + "nl2br", + ], + output_format="html5", + ) + parts.append( - f"
{c}
" + f"
" + f"
" + f"
{body_html}
" + f"
" ) parts.append("") diff --git a/poetry.lock b/poetry.lock index ac46700..b968699 100644 --- a/poetry.lock +++ b/poetry.lock @@ -307,6 +307,21 @@ files = [ {file = "iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730"}, ] +[[package]] +name = "markdown" +version = "3.10" +description = "Python implementation of John Gruber's Markdown." +optional = false +python-versions = ">=3.10" +files = [ + {file = "markdown-3.10-py3-none-any.whl", hash = "sha256:b5b99d6951e2e4948d939255596523444c0e677c669700b1d17aa4a8a464cb7c"}, + {file = "markdown-3.10.tar.gz", hash = "sha256:37062d4f2aa4b2b6b32aefb80faa300f82cc790cb949a35b8caede34f2b68c0e"}, +] + +[package.extras] +docs = ["mdx_gh_links (>=0.2)", "mkdocs (>=1.6)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] + [[package]] name = "packaging" version = "25.0" @@ -744,4 +759,4 @@ zstd = ["zstandard (>=0.18.0)"] [metadata] lock-version = "2.0" python-versions = ">=3.10,<3.14" -content-hash = "d5fd8ea759b6bd3f23336930bdce9241659256ed918ec31746787cc86e817235" +content-hash = "86db2b4d6498ce9eba7fa9aedf9ce58fec6a63542b5f3bdb3cf6c4067e5b87df" diff --git a/pyproject.toml b/pyproject.toml index 6f13468..3d46c7e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,6 +14,7 @@ python = ">=3.10,<3.14" pyside6 = ">=6.8.1,<7.0.0" sqlcipher3-wheels = "^0.5.5.post0" requests = "^2.32.5" +markdown = "^3.10" [tool.poetry.scripts] bouquin = "bouquin.__main__:main"