----- Documentation: [html](https://docs-beta.ethers.io/) ----- Flatworm Docs ============= The *Flatworm Docs* rendering script is designed to be **very** simple, but provide enough formatting necessary for documenting JavaScript libraries. A lot of its inspiration came from [Read the Docs](https://github.com/readthedocs/sphinx_rtd_theme) and the [Sphinx](https://www.sphinx-doc.org/) project. Fragments --------- Flatworm Docs are made up of fragments. A fragment is either a lone body of [markdown](./) text, or a [directive](./) for specialized formatting, which may itself have body. ### Directive Format ``` _DIRECTIVE: VALUE @ BODY DIRECTIVE: The directive name VALUE: Optional; the value to pass to the directive LINK: Optional; a name for internal linking BODY: Optional; the directive body (certain directives only) ``` ### Flatworm Directives #### **_section:** *TITLE* A *section* has its **TITLE** in an H1 font. Sections are linked to in *Table of Contents* and have a dividing line drawn above them. If an option is specified, it is avaialble as a name for intern linking. There should only be one `_section:` per page. #### **_subsection:** *TITLE* A *subsection* has its **TITLE** in an H2 font. Subsections are linked to in *Table of Contents* and have a dividing line drawn above them. If an option is specified, it is avaialble as a name for internal linking. #### **_heading:** *TITLE* A *heading* has its **TITLE** in an H3 font. If an option is specified, it is available as a name for internal linking. #### **_definition:** *TERM* A *definition* has its **TERM** bolded and the markdown body is indented. #### **_property:** *SIGNATURE* A *property* has its JavaScript **SIGNATURE** formatted and the markdown body is indented. #### **_code:** *FILENAME* A *code* reads the **FILENAME** and depending on the extension adjusts it. For JavaScript files, the file is executed, with `//!` replaced with the result of the last statement and `//!error` is replaced with the throw error. If the error state does not agree, rendering fails. #### **_toc:** A *toc* injects a Table of Contents, loading each line of the body as a filename and recursively loads the *toc* if present, otherwise all the *sections* and *subsections*. #### **_null:** A *null* is used to terminated a directive. For example, after a *definition*, the bodies are indented, so a *null* can be used to reset the indentation. ### Examples ``` _section: Hello World @ _subsection: Some Example @ _heading: Large Bold Text @ _definition: Flatworm A phylum of relatively **simple** bilaterian, unsegmented, soft-bodied invertebrates. _property: String.fromCharCode(code) => string Returns a string created from //code//, a sequence of UTF-16 code units. _code: filename.js _toc: some-file some-directory _null: This breaks out of a directive. For example, to end a _definition and reset the indentation. ``` Markdown -------- The markdown is simple and does not have the flexibility of other dialects, but allows for **bold**, *italic*, *underlined*, `monospaced`, ^super-scripted text, supporting [links](./) and lists. ``` **bold text** //italic text// __underlined text__ ``monospace code`` ^^superscript text^^ - This is a list - With bullet points - With a total of three items This is separated by -- an en-dash. This is separated by --- an em-dash. This is a [Link to Ethereum](https://ethereum.org) and this is an [Internal Link](some-link). This is a self-titled link [[https://ethereumorg]] and this [[some-link]] will use the title from its directives value. ``` ----- **Content Hash:** 2d45e62661589ea3cdf50cc4da9faf63c33b7385840b31fddaf9d3cbe35d6015