This is a description of the yarn passage format.

Links

A Yarn link is of the form [[destination|display text]].

If this order is counter-intuitive to you, see 'linksilly' on the js api page. Please don't do this.

Javascript

You can insert raw Javascript by beginning a line with $.

You can insert a block of raw Javascript by putting ${ on a line by itself, followed by the script, followed by $} on a line by itself. This is equivalent to putting $ before each line of the script.

$ lines, and ${ and $} don't introduce any vertical space. For example:

This is
$ // some js...
${
// some more js...
$}
a test. And here:

$ // ...
is a space.

Produces this output: (providing the script doesn't write() anything)

This is
a test. And here:

is a space.

Very Small Example Game

[[start]]

You look around slowly.
$ save.eyehp = 5;

It feels like [[hello|someone is watching you]].

[[hello]]

Surprise, it was me!
But I am just a friendly disembodied eye. (:

[[attack|Hit the eye]].

[[attack]]

${
save.eyehp -= Math.random() * 3;
if (save.eyehp <= 0)
	write('O! O! O! O! O! I am dead.');
else
	write('Ouch! But I\'m still alive! :D \n\n [[attack|NO MERCY]].');
$}