Skip to main content

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

Project description

Draft.js exporter 🐍 - Markdown edition

PyPI PyPI downloads Travis Coveralls Total alerts Language grade: Python

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 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 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.3.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

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

draftjs_exporter_markdown-0.2.3-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: draftjs_exporter_markdown-0.2.3.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • 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.3.tar.gz
Algorithm Hash digest
SHA256 81b3d1d91bf7c8b9e96d413e8f6b4a7fcdf86d1ccdfc1075c14647291a49b3b6
MD5 c05064b8bc75d1ccf303d59eee2ae8a7
BLAKE2b-256 eaa2d08e3f7b323be4ef88bf446b9501919bd375760a0d08c75d5eeeb3c1c54e

See more details on using hashes here.

File details

Details for the file draftjs_exporter_markdown-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: draftjs_exporter_markdown-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0c29fd77cbf286ca925e4ae1f9cf1969a56a3e73b7b297317f8183d8618a6396
MD5 2bf3979cbd3532f0dfaf5fbbceba6063
BLAKE2b-256 5be1b78cb1747bcd94d0e7563e9ab37cce5e6d5d35efd18bdff2a668f131bb32

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