diff --git a/pyproject.toml b/pyproject.toml index dbd68cc..2b02154 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,7 +36,7 @@ classifiers = [ requires-python = ">=3.10" [project.optional-dependencies] -md = ["cmarkgfm>=0.8.0"] +md = ["comrak>=0.0.8"] [tool.setuptools] include-package-data = true @@ -66,6 +66,6 @@ enable_error_code = [ [[tool.mypy.overrides]] # These modules do not yet have types available. module = [ - "cmarkgfm.*" + "comrak.*" ] ignore_missing_imports = true diff --git a/readme_renderer/markdown.py b/readme_renderer/markdown.py index 6e71a43..ff0b8da 100644 --- a/readme_renderer/markdown.py +++ b/readme_renderer/markdown.py @@ -30,16 +30,36 @@ ) try: - import cmarkgfm - from cmarkgfm.cmark import Options as cmarkgfmOptions + import comrak + + gfm_extension_options = comrak.ExtensionOptions() + gfm_extension_options.autolink = True + gfm_extension_options.strikethrough = True + gfm_extension_options.table = True + gfm_extension_options.tagfilter = True + gfm_extension_options.tasklist = True + + common_render_options = comrak.RenderOptions() + common_render_options.unsafe_ = True # handled by nh3 + variants: Dict[str, Callable[[str], str]] = { - "GFM": lambda raw: cast(str, cmarkgfm.github_flavored_markdown_to_html( - raw, options=cmarkgfmOptions.CMARK_OPT_UNSAFE - )), - "CommonMark": lambda raw: cast(str, cmarkgfm.markdown_to_html( - raw, options=cmarkgfmOptions.CMARK_OPT_UNSAFE - )), + "GFM": lambda raw: cast( + str, + comrak.render_markdown( + raw, + extension_options=gfm_extension_options, + render_options=common_render_options, + ), + ), + "CommonMark": lambda raw: cast( + str, + comrak.render_markdown( + raw, + render_options=common_render_options, + ), + ), } + except ImportError: warnings.warn(_EXTRA_WARNING) variants = {}