Lossy steno data

Each time a stroke is written, Plover2CAT will first parse the the number of backspaces and/or text string the Plover engine outputs. The text string element (third) in the strokes array will be modified. The resulting strokes list will contain a lossy representation of the steno and the text as the backspaces Plover emits are used, but not recorded explicitly.

Take for example writing pleasing.

strokes = [
["2001-01-01T01:23:45.678", "PHRES", "please"]
]

When -G is stroke, for the suffix -ing, Plover will emit one backspace (to remove the e), and the text string ing. The stroke representation will become:

strokes = [
["2001-01-01T01:23:45.678", "PHRES", "pleas"],
["2001-01-01T01:24:56.789", "-G", "ing"]
]

One benefit of doing this is that the user can still search the steno for the stroke PHRES and find pleasing.

If a * is stroked, it will erase the complete stroke. Imaging having written -T KAT S- for The at is.

strokes = [
["2001-01-01T01:23:45.678", "-T", "The"],
["2001-01-01T01:23:46.789", "KAT", " cat"],
["2001-01-01T01:23:46.789", "S-", " is"]
]

If * is used, Plover will emit three backspaces (two spaces for is and one for the space at the front). Then strokes is updated back to:

strokes = [
["2001-01-01T01:23:45.678", "-T", "The"],
["2001-01-01T01:23:46.789", "KAT", " cat"]
]

The tape will still record -T KAT S- * but the stroke data only has -T KAT

Advantages for this method is that it keeps the transcript file size small without multiple strokes of ["timestamp", "*", ""] cluttering the file. This works well with Plover theory where the * is used on its own as undo. In other theories where * may be used on its own as part of an outline, then * will be missing from the transcript data.