Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thibaudcolas/draftjs_exporter_markdown
Library to convert rich text from Draft.js raw ContentState to Markdown
https://github.com/thibaudcolas/draftjs_exporter_markdown
draft-js draftjs-exporter draftjs-utils exporter python
Last synced: about 2 months ago
JSON representation
Library to convert rich text from Draft.js raw ContentState to Markdown
- Host: GitHub
- URL: https://github.com/thibaudcolas/draftjs_exporter_markdown
- Owner: thibaudcolas
- License: mit
- Created: 2018-02-27T21:21:08.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2024-06-11T10:27:07.000Z (7 months ago)
- Last Synced: 2024-06-11T16:25:50.562Z (7 months ago)
- Topics: draft-js, draftjs-exporter, draftjs-utils, exporter, python
- Language: Python
- Homepage: https://pypi.org/project/draftjs-exporter-markdown/
- Size: 801 KB
- Stars: 3
- Watchers: 2
- Forks: 3
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Draft.js exporter π - Markdown edition
[![PyPI](https://img.shields.io/pypi/v/draftjs_exporter_markdown.svg)](https://pypi.org/project/draftjs_exporter_markdown/) [![PyPI downloads](https://img.shields.io/pypi/dm/draftjs_exporter_markdown.svg)](https://pypi.org/project/draftjs_exporter_markdown/) [![Build status](https://github.com/thibaudcolas/draftjs_exporter_markdown/workflows/CI/badge.svg)](https://github.com/thibaudcolas/draftjs_exporter_markdown/actions) [![Coveralls](https://coveralls.io/repos/github/thibaudcolas/draftjs_exporter_markdown/badge.svg)](https://coveralls.io/github/thibaudcolas/draftjs_exporter_markdown) [![Total alerts](https://img.shields.io/lgtm/alerts/g/thibaudcolas/draftjs_exporter_markdown.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/thibaudcolas/draftjs_exporter_markdown/alerts/) [![Language grade: Python](https://img.shields.io/lgtm/grade/python/g/thibaudcolas/draftjs_exporter_markdown.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/thibaudcolas/draftjs_exporter_markdown/context:python)
> Library to convert rich text from Draft.js raw ContentState to Markdown, based on [Draft.js exporter](https://github.com/springload/draftjs_exporter).
>
> π§ This is an experimental exporter with limited Markdown support βΒ please use with caution.## Usage
This package is a Markdown export configuration for the [Draft.js exporter](https://github.com/springload/draftjs_exporter). Specifically, it provides:
- A Markdown-friendly exporter engine, with fallbacks to HTML tags.
- Configuration for basic Markdown formatting.First, install the package:
```sh
pip install draftjs_exporter_markdown
```Then, to convert Draft.js content to Markdown:
And in Python:
```py
from draftjs_exporter.html import HTML
from draftjs_exporter_markdown import BLOCK_MAP, ENGINE, ENTITY_DECORATORS, STYLE_MAP# Initialise the exporter.
exporter = HTML({
# Those configurations are overridable like for draftjs_exporter.
'block_map': BLOCK_MAP,
'style_map': STYLE_MAP,
'entity_decorators': ENTITY_DECORATORS,
'engine': ENGINE,
})markdown = exporter.render({
'entityMap': {},
'blocks': [{
'key': '6mgfh',
'text': 'Hello, world!',
'type': 'unstyled',
'depth': 0,
'inlineStyleRanges': [],
'entityRanges': []
}]
})print(markdown)
```You can also run an example by downloading this repository and then using `python example.py`.
### Configuration
Please refer to the [Draft.js exporter configuration documentation](https://github.com/springload/draftjs_exporter#configuration).
### Supported Markdown formatting
The built-in configuration provides support for:
- Inline styles: bold, italic, strikethrough, code
- Blocks: paragraphs, heading levels, bullet and number lists, code blocks, blockquote
- Images, links, and horizontal rulesContrary to the main Draft.js exporter,
- Nested / overlapping styles aren't supported.
- None of the content is escaped (HTML escaping is unnecessary for Markdown, and there is no Markdown escaping).## Development
> Requirements: `virtualenv`, `pyenv`, `twine`
```sh
git clone [email protected]:thibaudcolas/draftjs_exporter_markdown.git
cd draftjs_exporter_markdown/# Install dependencies
nvm install
npm install
# For tests and development in watch mode.
npm install -g nodemon# Install the Python environment.
virtualenv .venv
source ./.venv/bin/activate
make init# Install required Python versions
pyenv install --skip-existing 3.6.3
# Make required Python versions available globally.
pyenv global system 3.6.3# Run the built-in example.
make dev
```### Releases
Use `make release`, which uses [standard-version](https://github.com/conventional-changelog/standard-version) to generate the CHANGELOG and decide on the version bump based on the commits since the last release.
## Credits
View the full list of [contributors](https://github.com/thibaudcolas/draftjs_exporter_markdown/graphs/contributors). [MIT](LICENSE) licensed.