[REQ-purpose]
text = '''
Write a flash card quizzer from scratch and learn about artifact
while doing so.
The example tutorial can be found here:
http://wiki.openhatch.org/Flash_card_challenge
or at: {repo}/flash_card_challenge.htm
The program should be easy to understand and follow along so that it can
reach maximum audience for instructing in artifact
This can be broken into several parts:
- [[REQ-learning]]: define goals for ease of learning
- [[REQ-cmd]]: requirements for the command line interface
'''
[REQ-learning]
partof = 'REQ-purpose'
text = '''
The flash program should do things in a way that is most condusive to learning
the desired subject. This includes:
- asking items in a random order
- asking missed items more often
- telling the correct answer after the user answers incorrectly
- allow users to configure time limits, so they can
compare results between quizzes.
duplicates **shall not** be allowed, as they would be extremely confusing
'''
[REQ-cmd]
partof = 'REQ-purpose'
text = '''
The minimum viable product shall be a command line utility that is given the
path to one or more question files as arguments and has options which
help it obtain the goals outlined in [[REQ-learning]].
It shall also:
- give the user feedback on each question
- print out a final report
See [[SPC-cmd]] for the specification.
'''
[SPC-cmd]
text = '''
In addition to the path to one or more question files, the arguments
for the cmdline utility shall be:
- `-t`: specify the time allowed for each question
- `-T`: specify the total time allowed for the whole quiz
- `-r NUM`: repeat questions only a certain number of times.
By default there is no limit.
## Responses
When an answer to a question is correct, a happy message **shall** be
displayed. Otherwise, an error message with the correct answer **shall** be
displayed.
The program will ask one question at a time, recording how many answers
the user got correct/incorrect.
TODO: detail how the message shall look.
## Final Results
When the program is complete a report shall be printed with:
- time taken, broken up by whole quiz and each question
- the user's total score
- questions ranked by ones the user had the most difficulty
Further information:
- [[SPC-load]]: specification for loading data
'''
[SPC-random]
partof = 'SPC-cmd'
text = '''
The questions **shall** be presented randomly.
Questions that are answered incorrectly **shall** be given a higher weight to
being asked again, to help the user learn.
'''
[TST-cmd]
text = '''
End to end tests shall be written to validate the cmdline interface:
- pass in invalid arguments and expect rc != 1
- pass in a valid path and answer several questions correctly
and exit, validating the report
- pass in a valid path and answer a question wrong, validating
the error output
'''