purity — a general purpose purity test

Synopsis

/usr/games/purity [ flags ] [ testname ]

Description

Purity is an interactive purity test program with a simple, user interface and datafile format. For each test, questions are printed to the your terminal, and you are prompted for an answer to the current question. At a prompt, these are your choices:
y
Answer "yes" to the question.
n
Answer "no" to the question.
b
Backup one question, if you answered it incorrectly, or someone is watching you take the test, and you don't (or do) want to admit a different answer.
r
Redraw the current question.
q
Quit the test, and print the current score.
?
Print a help screen for the current prompt.
k
Kill a section of the test. This skips all the questions of the test until the next subject heading.
a
Toggle answer mode between real answers and obfuscated answers. Real answers print "yes" and "no", while obfuscated answers are "Maybe" and "maybe". Obfuscated answers are preferred if you are shy, and don't want people to be able to read your answers over your shoulder as you take the test.
d
Toggle dERanGe output.
s
Print your current score on the test you are taking.
l
Toggle score logging.

At the end of the test, your score is printed out. For most purity tests, lower scores denote more "experience" of the test material.

Flags

These are the command line flags for the test.
-a
Show real answers (i.e. "yes" and "no") instead of obfuscated ones (i.e. "Maybe" and "maybe") as you answer the questions.
-d
PrINt THe tESt in DerANgeD pRInT.
-f
Take the test in fast mode. Only the questions are printed, and not any other text blocks, like the introdution, subject headers, and the conclusion.
-l
Take the test without having your score logged.
-p
Print the test without prompting for answers. This is useful for making hard copies of the tests without having to edit out the prompts by hand.
-r
Decrypt the test using the Rot 13 algorithm. This is done as a form of "protection", such that if you read a rot13 test and it offends you, it's your own fault.
-z
zoom through more prompts in large text blocks. The default is to prompt the user for more when a screenful of text has been printed without any user input.

Datafile format

The format of the datafiles is a very simple format, intended such that new tests can quickly and easily be converted to run with the test.

There are four types of text in a purity test datafile. Each type is contained in a bracket type of punctuation. The definitions are as follows:

the styles of text blocks are:

{ plain text block }
[ subject header ]
( test question )
and    < conclusion >

Plain text blocks are printed out character for character.

Subject headers are preceded by their subject numbers, starting at 1, and then printed as text blocks.

Questions are preceded by their numbers, and then prompt the user to answer the question, keeping track of the user's current score.

Conclusions first calculate and print the user's score for the test, then print out the conclusion as a text block.

If you wish to include any of the various bracket punctuation in your text, the backslash ("\") character will escape the next character.

To print a question with parentheses, you would use the following format:

(have you ever written a purity test \(like this one\)?)

the output would be this:


   1.  have you ever written a purity test (like this one)?

and then it would have asked the user for her/his answer.

For a generic datafile, use the "sample" datafile for the test.

Files

/var/games/purity.scores        the score logfile
/usr/share/games/purity/*               test data files

Author

Eric Lechner, lechner@ucscb.ucsc.edu