lemnos / tt

A terminal based typing test.
MIT License
714 stars 48 forks source link

Overhaul of internals to support masked chars and multi-line code quotes in raw mode #44

Open jmonroynieto opened 1 year ago

jmonroynieto commented 1 year ago

Addresses #42 and #11

The aim of this change is to support code-typing texts using the quote function.

This commit changes the previous rendering workflow to one that only runs changes in the necessary words when there is a render-worthy event. Now the screen uses cells extensively which have been extended to contain format metadata. This simplifies styling since each cell knows what it should look like in any given state.

The comparison scheme is changed to a new set of strings in the evaluation where "typed" is compared to "rubric" but rendering and cursor placement are based on "text" which may contain masking characters.

An additional color option for masking characters that represent whitespace was necessary. The program now finds a suitable option derived from the theme. Some of the changes aim to improve readability and update deprecated dependencies.

99% of functionality works fine. Styling and backspace in masked characters in raw mode are still wonky in some cases. See debugConfig branch in my fork to check out the tests that I was running for this.