Toronto: the simplest way to write novels & scenarios made of many interconnected fragments.
Mainly for:
- Novelists who need to define the characters, places, events… of their story in a "database way", and then need to weave free semantical relations between them.
- Authors of tabletop RPG scenarios, for whom this interconnected fragments-based way of writing is absolutely natural.
- Because sometimes, writing simple text files and organizing them into directories and subdirectories is more convenient than dealing with a less intuitive hypertext writing tool which persists data in an opaque way.
- Because every system hosts a text editor.
Toronto is based on a "write, parse, publish" workflow. You write text files, enrich them with metadata and link them. Then, Toronto will parse your files and provide a viewer with a serialized representation of your data. There is an analogy with the LaTeX workflow : 1) writing .tex files (=> text files with Toronto syntax), 2) calling the latex compiler (=> the Toronto parser which compile your data in JSON), and eventually, 3) calling a PDF viewer (=> a graph viewer which relies on the serialised data).
First, you write text simple files and organise them into folders:
~/MyFirstNovel/Characters/Mary.tex:
Mary is a brilliant pianist.
She likes Bach and Schubert.
Her father owns a farm in Ohio.
She now lives in Toronto.
~/MyFirstNovel/Characters/Peter.tex:
Peter is a philosophy teacher.
He likes chinese food, duck hunt and single malts from Islay island.
He works at Toronto university.
Then, you enrich files with metadata.
A metadata is any word you need, preceded by "%$"
.
~/MyFirstNovel/Characters/Mary.tex:
%$NAME Mary
Mary is a brilliant pianist.
(…)
~/MyFirstNovel/Characters/Peter.tex:
%$NAME Peter
%$OCCUPATION Teacher
Peter is a philosophy teacher.
(…)
From now, your files are not just files but… Entities! Tada! You can define semantic relations:
~/MyFirstNovel/Characters/Mary.tex:
%@ mary
%$NAME Mary
%&loves>peter
Mary is a brilliant pianist.
(…)
~/MyFirstNovel/Characters/Peter.tex:
%@ peter
%$NAME Peter
%$OCCUPATION Teacher
%&hates>mary
Peter is a philosophy teacher.
(…)
A link declaration is made of a starting %&
(which means: "I'm a link!"), a link name, a direction (>
or <
) and an Entity id.
Csqtly, to be linked, an Entity must declare an id in its correspondig text file.
This is made by typing: %@ entity_id
.
Sometimes, you'll want to comment links. Here is the corresponding syntax:
~/MyFirstNovel/Characters/Peter.tex:
%@ peter
(…)
%&hates>mary
%(
Peter hates Mary because she said that Adorno is so hard to read that she fells asleep everytime she opens one of his books.
This terrible incident occured at a party where both of them were invited.
%)
(…)
Once you have written, enriched and linked text files thanks to the above-explained minimalistic syntax, you can launch Toronto. A JSON representation of all your data will appears on stdio.
/!\ WORK IN PROGRESS /!\
Generated JSON data allow everyone to build visual representations of the Entities hypertext semantic network.
I'm currently working on graph viz that are based on d3.js
.
Toronto is a Java console app which takes a single parameter which is the URI of your project folder:
java -jar <Toronto.jar generated by Maven> ~/MyFirstNovel/
You need Maven: build.sh
contains the Maven tasks you can run to compile the application.