Skip to main content

Library to convert rich text from Draft.js raw ContentState to Markdown, based on draftjs_exporter

Project description

> Library to convert rich text from Draft.js raw ContentState to Markdown, based on Draft.js 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. Specifically, it provides:

  • A Markdown-friendly exporter engine, with fallbacks to HTML tags.

  • Configuration for basic Markdown formatting.

First, install the package:

pip install draftjs_exporter_markdown

Then, to convert Draft.js content to Markdown:

And in Python:

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.

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 rules

Contrary 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

git clone git@github.com:thibaudcolas/draftjs_exporter_markdown.git
cd draftjs_exporter_markdown/

# Install the git hooks.
./.githooks/deploy

# 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 2.7.11
pyenv install --skip-existing 3.6.3
# Make required Python versions available globally.
pyenv global system 2.7.11 3.6.3

# Run the built-in example.
make dev

Releases

Use make release, which uses 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. MIT licensed.

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

draftjs_exporter_markdown-0.2.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

draftjs_exporter_markdown-0.2.0-py2.py3-none-any.whl (12.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file draftjs_exporter_markdown-0.2.0.tar.gz.

File metadata

File hashes

Hashes for draftjs_exporter_markdown-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ec7b70d1869a941dd7ea2dd59b6608b043c32e48e52635d8f667281e70b81f16
MD5 5b44da50f95396369256fc12d847536e
BLAKE2b-256 c19bfaeebf725e54915dbbcf1040530cc2b7b6387a713ad952e06fac79fb7480

See more details on using hashes here.

Provenance

File details

Details for the file draftjs_exporter_markdown-0.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: draftjs_exporter_markdown-0.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.20.1 setuptools/46.1.1 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.2

File hashes

Hashes for draftjs_exporter_markdown-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0c6646078ce5085e11b505fa05358903b260c401307401079ecefd4851299d0d
MD5 519d34edbbfac5582bd9bd9f9aa412e3
BLAKE2b-256 4c3b39b86841b6563be9330c0eea20015769b3d5093e5b909b4706689bb0fbb4

See more details on using hashes here.

Provenance

Supported by

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