The Storm Theme

This theme is used to generate the Storm documentation. As such it provides some additional features to the Markdown syntax to aid in creation of documentation.

First and foremost, the theme needs to know the current version of the Storm system and the date which it was built on to include them in the documentation. These are both specified as additional options on the command line (or in the Options object):

Navigation

The Storm theme uses the title of nodes in the documentation tree to generate a table of contents which the user can use to navigate the documentation. It also generates three links at the bottom of each page which takes the user to the next or previous page, or up one level.

Extensions

The Storm theme provides the following extensions to the Markdown syntax:

Syntax Highlighting

The Storm theme uses the standard facilities for highlighting source code using the Storm syntax highlighting. As such, specifying any language that Storm recognizes enables syntax highlighting for the corresponding code block. Additionally, a few custom highlighting custom parts of Basic Storm:

For code elements, the contained code may contain a single line with the syntax: <?include:...?> where ... is the path of a file relative to the root directory. This copies the text from the file into the code block before it is processed further. This is used to include examples from the source code of Storm.

Custom Elements

The following custom elements are available through the [] syntax in Markdown. In the Storm theme, all of these start with a keyword that determines the type of custom element. If the parameter requires parameters, they are written after a colon (:). The following elements are available:

Storm Documentation

A code block with the language stormdoc can be used to extract documentation from the built-in Storm documentation and insert it in the generated documentation. In this case, the contents of the code block is interpreted as a mini-language that specifies what to include.

In the mini-language, each line is interpreted in turn. Each line contains a name or a part of the name to something in the name tree. The name may be either absolute or relative. The system remembers the last absolute name that was resolved and uses it as the starting point for any relative names that follows. This makes it possible to specify a class- or package name once, and then only specify the names of the relevant members.

For each name that was successfully resolved, the system inserts the built-in documentation for the entity in the documentation (after parsing it as Markdown). This behavior can be modified by using one of the following prefixes:

For convenience the name resolution in the Storm documentation allows omitting the implicit this parameter of member functions. That is, to refer to the function f inside the type T it is enough to write T.f() (assuming no other parameters).

Furthermore, the syntax provides a shorthand for including multiple similar entities: