inkling 0.11.4

Limited implementation of the Ink markup language.
Documentation
# Inkling


Limited Rust implementation of the `Ink` markup/scripting language for game dialog.

Ink is a creation of [Inkle](https://www.inklestudios.com/). For more information about the language, [see their website](https://www.inklestudios.com/ink/).

```
Using Ink you can easily write a story or create a dialog tree.

*   Branching is very simple[]: <>
    just start your line with an asterix or plus marker.
    Want nested choices? Add more markers!
    * *     A branching choice contains all information below it
            of the same level or higher.
            * * *       [I see.]
    * *     Pretty cool, huh?
    - -     Use gather points like this to return all nested choices <>
            to a single path.
    * *     [Cool!] -> fin

*   You can organize the story using knots <>
    and divert (move) to them, like this:
    -> next_knot

=== next_knot ===
Simple and fun.
-> fin

=== fin ===
Ink is very powerful and has a lot more features than shown here. <>
Do note that `inkling` only implements a subset of all its features. <>
Hopefully more in the future!
-> END
```


## Features


Currently and likely for the foreseeable future the feature set is very limited compared to Inkle's own implementation. Available features are:

*   Knots, stitches, glue and diverts, ie. basic story structure
*   Choices, of sticky and non-sticky kinds, plus fallback choices
*   Nesting choices and gather points
*   Line text alternative sequences (sequences, cycle, once-only) and conditions
*   Simple conditionals for which choices are presented, but only for checking against how many times knots have been visited
*   Tagging of lines and choices
*   Optional: De/serialization of finished stories through `serde`

Likely candidates for further development:

*   Variables
*   Includes of other files

Difficult features for which I doubt my skill level to implement:

*   Advanced flow control: tunnels and threads
*   Verifying that all story branches are complete
*   Mathematics and heavy logic


## Usage


See the [documentation](https://docs.rs/inkling/) or provided example for a minimum viable story processor. Enable `serde` de/serialization by activating the `serde_support` feature. This feature derives `Deserialize` and `Serialize` for all required structs.


## Contributions


Writing this has mostly been for fun and to create a simple game, hence the lack of features. Contributions are welcome!