tvl-depot/scratch/brilliant
William Carroll f11b91c985 Adds property tests to generically test keyboard transformations
Tests:
- HorizontalFlip
- VerticalFlip
- Shift n
2020-08-12 11:27:06 +01:00
..
.ghci Create small command line program that parses arguments 2020-08-04 16:36:31 +01:00
App.hs Re-type type using the altered keyboard 2020-08-06 00:18:44 +01:00
default.nix Provide more useful instructions for building this project 2020-08-12 10:28:04 +01:00
Keyboard.hs Generate coords function from existing qwerty keyboard 2020-08-12 09:46:36 +01:00
Main.hs Re-type type using the altered keyboard 2020-08-06 00:18:44 +01:00
README.md Provide more useful instructions for building this project 2020-08-12 10:28:04 +01:00
shell.nix Provide more useful instructions for building this project 2020-08-12 10:28:04 +01:00
Spec.hs Adds property tests to generically test keyboard transformations 2020-08-12 11:27:06 +01:00
Transforms.hs Support Transforms.optimize 2020-08-06 00:15:31 +01:00
Utils.hs Support App.transform 2020-08-05 23:21:08 +01:00

Transform QWERTY

Apply a series of transforms to a QWERTY keyboard then use the new keyboard to re-type a passage of text.

Environment

You will need Nix to build this program on your machine. The good news is that you won't need any Haskell-specific dependencies like ghc, cabal, or stack: just Nix.

Once you have Nix installed, to build the program, run the following from this project's top-level directory:

$ nix-build

This should output an executable named transform-keyboard within a result directory:

$ tree result
result
└── transform-keyboard

Testing

To run the test suite, run the following from the project's top-level directory:

$ nix-shell
$ runhaskell Spec.hs

Usage

Here are some --help and usage examples:

$ ./result/transform-keyboard --help
Usage: transform-keyboard (-t|--transforms ARG) (-p|--passage ARG)
  Transform a QWERTY keyboard using a string of commands

Available options:
  -t,--transforms ARG      String of transforms where (e.g. "HHVS12VHVHS3")
  -p,--passage ARG         Input text to re-type
  -h,--help                Show this help text

Now a working example:

$ ./result/transform-keyboard --transforms=HHVS12VHVHS3 --passage='Hello,Brilliant.'
Typing: "Hello,Brilliant."
On this keyboard:
[N][M][,][.][/][Z][X][C][V][B]
[H][J][K][L][;][A][S][D][F][G]
[Y][U][I][O][P][Q][W][E][R][T]
[6][7][8][9][0][1][2][3][4][5]
Result: QKRRF30LDRRDY1;4

...and an example with an erroneous input (i.e. !):

$ ./result/transform-keyboard --transforms=HHVS12VHVHS3 --passage='Hello,Brilliant!'
Typing: "Hello,Brilliant!"
On this keyboard:
[N][M][,][.][/][Z][X][C][V][B]
[H][J][K][L][;][A][S][D][F][G]
[Y][U][I][O][P][Q][W][E][R][T]
[6][7][8][9][0][1][2][3][4][5]
Looks like at least one of the characters in your input passage doesn't fit on our QWERTY keyboard:
[1][2][3][4][5][6][7][8][9][0]
[Q][W][E][R][T][Y][U][I][O][P]
[A][S][D][F][G][H][J][K][L][;]
[Z][X][C][V][B][N][M][,][.][/]