tiffany352 / rink-rs

Unit conversion tool and library written in rust
https://rinkcalc.app/about
GNU General Public License v3.0
408 stars 28 forks source link

Output highlighting #90

Closed tiffany352 closed 3 years ago

tiffany352 commented 3 years ago

Creates a new representation for Rink's output in the form of a token tree. The tokens are arbitrary text that's tagged with a hint for their usage, such as numbers, units, etc.

This is then used in rink-cli to provide colored output, instead of the Display implementation that has been use until now.

Adds new config options for whether colors should be enabled (disabled by default), creating custom color themes, and enabling long-form output mode.

Long output is made possible by the ListBegin and ListSep token types. They indicate that something should be rendered as a list. The CLI can then use this to render lists using a Unicode bullet character, this is disabled by default.

Remaining tasks:

Syntax highlighting for actual input as you type it in will be significantly more complicated, because the parser has to pass through span information and be made infallible. That should get done in a followup PR.

Switches to rustyline away from linefeed, for these reasons:

Colors and long output mode both enabled, also a custom prompt set. image