Skip to content
/ Toronto Public

Hypertext writing tool (for novelists, RPG scenaris authors, etc.) relying on text files enriched with a simple syntax for defining metadata and semantic links between fragments

Notifications You must be signed in to change notification settings

Amleth/Toronto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Toronto: the simplest way to write novels & scenarios made of many interconnected fragments.

Who is this for ?

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.

Why does it exist ?

  • 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.

How does it taste ?

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).

The Toronto syntax

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.
%)
(…)

The Toronto parser

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.

The Toronto players

/!\ 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.

Technical notes

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.

About

Hypertext writing tool (for novelists, RPG scenaris authors, etc.) relying on text files enriched with a simple syntax for defining metadata and semantic links between fragments

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published