Skip to main content

Python implementation of converting ProseMirror doc to markdown with TaskList support

Project description

prosemirror-py-markdown

中文指引

Python implementation of converting ProseMirror doc to markdown with TaskList support

Forked from prosemirror-py-converter with additional features and improvements.

Core features

  • Based on ProseMirror basic model
  • Support custom extension
  • ProseMirror document converter: Json to Markdown in ProseMirror format
  • ✨ TaskList support - Convert ProseMirror task lists to markdown checkboxes
  • Improved node rendering logic for better markdown output
  • Mainly used for data analysis and display after spider ProseMirror documents

Quick start

  • Install prosemirror-py-markdown
pip3 install prosemirror-py-markdown
  • Convert ProseMirror document to Markdown
from pmconverter import prose2markdown

doc = {
     "type": "doc",
     "content": [
         {
             "type": "heading",
             "attrs": {
                 "level": 3
             },
             "content": [
                 {
                     "type": "text",
                     "text": "Example heading."
                 }
             ]
         }
     ]
}
print(prose2markdown(doc))
  • output markdown
### Example heading.

TaskList Example

from pmconverter import prose2markdown

doc = {
    "type": "doc",
    "content": [
        {
            "type": "task_list",
            "content": [
                {
                    "type": "task_item",
                    "attrs": {"checked": False},
                    "content": [
                        {"type": "text", "text": "Unchecked task"}
                    ]
                },
                {
                    "type": "task_item",
                    "attrs": {"checked": True},
                    "content": [
                        {"type": "text", "text": "Checked task"}
                    ]
                }
            ]
        }
    ]
}
print(prose2markdown(doc))

Output:

- [ ] Unchecked task
- [x] Checked task

Standard ProseMirror implementation

mark type list

  • link
  • bold
  • strong
  • code
  • italic
  • strike
  • subscript
  • superscript
  • underline

node type list

  • doc
  • heading
  • paragraph
  • image
  • bullet_list
  • ordered_list
  • task_list ✨ (new)
  • task_item ✨ (new)
  • table
  • blockquote
  • code_block
  • hard_break
  • horizontal_rule

Custom ProseMirror extension examples

iwiki doc converter

  • custom mark converter example
from pmconverter.basic_model import CommonSimpleMark
from pmconverter.model_factory import register_mark_class


class CustomMark(CommonSimpleMark):

    def __init__(self):
        super().__init__()
        self.type = "custom_mark"
        self.md_pre_mark = "<u>"
        self.md_after_mark = "</u>"


register_mark_class("custom_mark", CustomMark)
  • custom node converter example
from pmconverter.basic_model import Node
from pmconverter.model_factory import register_node_class


class CustomeImage(Node):

    def __init__(self):
        super().__init__()
        self.type = "custom_image"

    def convert_to_markdown(self, **kwargs) -> str:
        name = self.get_attr("name", "")
        url = self.get_attr("url", "")
        return f"![{name}]({url})"
        

register_node_class("custom_image", CustomeImage)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prosemirror_py_markdown-1.0.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prosemirror_py_markdown-1.0.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file prosemirror_py_markdown-1.0.0.tar.gz.

File metadata

  • Download URL: prosemirror_py_markdown-1.0.0.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for prosemirror_py_markdown-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5c0d89251e78784ea1bcada1e3f83db7b636ccd37b21ff15cd864b38737db6a9
MD5 8ce464c9387d83f4ad2887f729671555
BLAKE2b-256 a750c7c966236a47ca59fc0091a1859f93ef9d3dbab5dbc55ccd7bfda2b951d5

See more details on using hashes here.

File details

Details for the file prosemirror_py_markdown-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for prosemirror_py_markdown-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6d013c7e2576e85fa6ba23c86422202caab940305a045f3effdc881ad04784de
MD5 ed96eaae1f3f57a55158e3e425da7156
BLAKE2b-256 3a687182aa946688dc75aa7adec48ee3326984978520c428c773153c452b33da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page