Skip to main content

An opinionated markup language for composing, documenting, and visualizing a novel.

Project description

PyPI Version Release Date License
Issues Language grade: Python

Monkeytale

"The book is a program." from Pollen by Matthew Butterick

Monkeytale is a markup language for documenting and composing a story world and its novels. I am building this language to improve insight into my own writing and to learn more about software development.

Design Principles

To stay honest in the application of these principles, here's a useful bit to keep in mind:

"Special cases aren't special enough to break the rules, although practicality beats purity." from The Zen of Python by Tim Peters

  • The book is a program.
    Monkeytale lives within your manuscript, within your notes, where you work.
  • Document what is there. Plugin your own opinion.
    Monkeytale does not give advice on how to improve your writing. It's job is to collects information about your writing, so plugins can decide how to support your writing.
  • Keeping it simple makes it durable.
    Monkeytale has a minimal syntax, no configuration, and uses flat text files.

Planned Functionality

As the second principle indicates, Monkeytale functionality comes in two parts. The core functionality documents as much as possible of what has been written. The second, through plugins, reports on that documented material.

Monkeytale

This will be core Monkeytale functionality, the result of which is exposed to the plugins to render different outputs.

  • Compose multiple narratives by (re-)using story components
  • Derive story structure from story components and their content
  • Provide plugin mount point for generation of documents from story structure extracted by Monkeytale
  • Execute from continuous integration server

Plugin

Anyone could write a plugin and make it available through PyPI and Monkeytale could make use of it. How Monkeytale knows which plugins to use without configuration remains a challenge to be conquered.

  • Generate ToDoTree configuration in .vscode/settings.json to help navigate story structure
  • Generate Markdown of each manuscript
  • Generate flow chart of scenes across PoV characters for each manuscript
  • Generate Markdown of backstory

Dismissed Functionality

  • Advice on how to improve or correct the writing
  • Typography and formatting, other than emphasis (italics)
  • Tables of content and indexing
  • Project management and goal tracking (maybe when hard writing deadlines ever become a reality for me)

Design Decisions

  • Python 3 will be the programming language for Monkeytale and the hooks for any plugins that folks might want to build
  • Github Actions using Linux as execution platform
  • Github Repo Fork as the delivery system.
  • Use .@ as the file extension to indicate Monkeytale files.
  • Single global namespace

My environment of choice

Development Progress

GitHub top language https://img.shields.io/pypi/pyversions/monkeytale?style=for-the-badge Last commit Commit activity PyPI Downloads PyPI Total Downloads

Monkeytale is developed in my spare time and uses Semantic Versioning and Semantic Release to track its, equally spare, progress.

As per Semantic Versioning: "Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable."

Check the change log for the latest updates.

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

monkeytale-0.3.2.tar.gz (6.5 kB view hashes)

Uploaded Source

Built Distribution

monkeytale-0.3.2-py3-none-any.whl (5.7 kB view hashes)

Uploaded Python 3

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