Draft.js sample content generated with Markov chains of Project Gutenberg books.
This sample content is meant to be used while testing projects based on Draft.js, in particular Draftail and draftjs_exporter.
Sample content can be useful to stress-test and benchmark tools built to handle Draft.js content. For the exporter, this is a great way to reliably assess its performance.
The content from this repository isn't generated randomly – while the text and metadata values are fake, the content’s structure and the distribution of rich text formatting amongst the text is representative of that of 3 big CMS sites combined.
Here are rich text formats used in the content:
- Blocks
unstyledheader-twoheader-threeheader-fourordered-list-item, depth: 0 or 1unordered-list-item, depth: 0 or 1atomic
- Inline styles
BOLDITALIC
- Entities
LINK,MUTABLEwithurl(URL),linkType(page|external|email), optionallyid(number)DOCUMENT,MUTABLEwithlabel(plain text),id(string containing a number)IMAGE,IMMUTABLEwithtitle(plain text),id(string containing a number),src(URL)HORIZONTAL_RULE,IMMUTABLEwithout data
In order to simplify using the samples across multiple projects, they are published as packages on npm and PyPI.
# JavaScript projects.
npm install markov_draftjs
# Python projects.
pip install markov_draftjsThen, in JavaScript:
const contentStates = require("markov_draftjs");And in Python:
from markov_draftjs import get_content_sample
content_states = get_content_sample()The sample content is also available from GitHub, eg. with RawGit (warning - big file): https://cdn.rawgit.com/thibaudcolas/markov_draftjs/44827d98/markov_draftjs/content.json.
Requirements:
uv,fnm
git clone git@github.com:thibaudcolas/markov_draftjs.git
cd markov_draftjs/
# Install the git hooks.
./.githooks/deploy
# Install JavaScript dependencies.
fnm install
npm install
# Unarchive sample text.
cd corpora/
tar -xzvf *.tar.gz
cd ..
# Install the Python environment (creates .venv/).
uv sync --group dev
# (Equivalent to running `make init`.)
# Generate new sample content.
uv run python -X dev -W error example.py
npm run start- Use
irish-pubto confirm the content of the npm package. - Make a new branch for the release of the new version.
- Update the CHANGELOG.
- Update the version number in
pyproject.toml,markov_draftjs/__init__.py, andpackage.json, following semver. - Make a PR and squash merge it.
- Back on main with the PR merged, use
make publish(powered byuv publish) andnpm publish. - Finally, go to GitHub and create a release and a tag for the new version.
- Done!