An opinionated markup language for composing, documenting, and visualizing a novel.
Project description
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
- Visual Studio Code (VSCode) will be the text editor of choice
- GruntFuggly's ToDoTree extension for VS Code will be used to support navigation. Will need a plugin that updates ToDoTree configuration as needed.
- Markdown Preview Enhanced extension for Markdown and Mermaid diagram display and conversion to docx using PanDoc and PDF using Safari.
Development Progress
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for monkeytale-0.3.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | adafcdee902802110d6973a34e2c78c39a783bd816d3f06720c06e8d8fd24f79 |
|
MD5 | 577f0f52e1253cba127b4906e4a73aae |
|
BLAKE2b-256 | 6855ca992c04a264c37ca84b8bde40cf999aed6a594590635a6b05e770f1604b |