5 releases
0.2.2 | Feb 24, 2024 |
---|---|
0.2.1 | Feb 23, 2024 |
0.2.0 | Feb 23, 2024 |
0.1.2 | Feb 6, 2024 |
0.1.1 | Feb 2, 2024 |
#415 in Text processing
Used in chocobrew
38KB
888 lines
Choco is a markup language for dialogue systems. It works by emitting signals from text into rust via special @
-syntax.
Syntax
Every signal is prefixed with @
-character. Signals may contain
- just a prompt (e.g.
@wave
) - just a parameter (e.g.
@{ My important param }
) - both prompt and parameter (e.g.
@bookmark{into}
) - or neither (e.g.
Pay attention! @
).
Three signal prompts are taken by Choco. These are bookmark
, choice
and style
.
Branching
Branching is easy in Choco. @bookmark{bookmark-name}
registers a graph node, and @choice{chosen-bookmark-name}
creates an edge between bookmark this choice belongs to and chosen bookmark. For example:
@bookmark{greet}
– Hello, you!
@choice{greet}– Come again?
@choice{bye}– Hi!
@bookmark{bye}
– Well, farewell..
Styling
Styling text is done with @style
signal. It accepts a mix of shortened to one character style names and prefixes promptless parameter, containing text.
For example,
@style{qbp}@{- Hello, you!}
Style names are slightly opinionated, but you decide how to display a mix of them:
Char | Style | Note |
---|---|---|
p | Panel | i.e. block |
c | Code |
|
q | > Quote | doesn't have to be block-quote |
b | Bold | |
i | Italic | |
s | i.e. strike-through |
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~2MB
~32K SLoC