cli: Add --select to filter the stack by index
authorW. Trevor King <wking@tremily.us>
Wed, 6 Feb 2013 21:02:12 +0000 (16:02 -0500)
committerW. Trevor King <wking@tremily.us>
Wed, 6 Feb 2013 21:02:14 +0000 (16:02 -0500)
For example, you can show the questions in a quiz with either the
`config` tag or the `checkout` tag:

  $ ./pq.py --all --tag config --tag checkout --questions quizzes/git.json
  Question 0:
  Configure your user-wide name to be `A U Thor`.

  Question 1:
  Configure your user-wide email to be `author@example.com`.

  Question 2:
  You've messed up your README file.
  Restore it to the last committed version.

Say questions 0 and 2 look interesting, and you'd like to try question
2 first.  Run:

  $ ./pq.py --all --tag config --tag checkout -s 2 -s 0 quizzes/git.json

quizzer/cli.py

index 89d972f17a82934887bb081104d780b1156fa967..d61f815b53b69c43c3abe20bad58125c9adb0b4c 100644 (file)
@@ -41,6 +41,9 @@ def main():
     parser.add_argument(
         '-t', '--tag', action='append',
         help='limit original questions to those matching at least one tag')
+    parser.add_argument(
+        '-s', '--select', action='append', type=int,
+        help='select questions from the original stack by index')
     parser.add_argument(
         '--tags', action='store_const', const=True, default=False,
         help='instead of running the quiz, print a list of tags on the stack')
@@ -74,6 +77,8 @@ def main():
         for tag in sorted(tags):
             print(tag)
         return
+    if args.select:
+        stack = [stack[i] for i in args.select]
     if args.questions:
         for i,q in enumerate(stack):
             print('Question {}:'.format(i))