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

#379 in Text processing


Used in chocobrew

MIT/Apache

38KB
888 lines

choco crate choco documentation workflow run status

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 Scratch 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