Python simple implementation of converting ProseMirror doc to markdown
- Based on ProseMirror basic model
- Support custom extension
- ProseMirror document converter: Json to Markdown in ProseMirror format
- Mainly used for data analysis and display after spider ProseMirror documents.
- Install prosemirror-py-converter
pip3 install prosemirror-py-converter
- 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.
- link
- bold
- strong
- code
- italic
- strike
- subscript
- superscript
- underline
- doc
- heading
- paragraph
- image
- bullet_list
- ordered_list
- table
- blockquote
- code_block
- hard_break
- horizontal_rule
- 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)