By: Team T09-2
Since: Aug 2018
Licence: MIT
- 1. Introduction
- 2. Quick Start
- 3. Features
- 3.1. Viewing help :
help
- 3.2. Lists all decks (or all cards) :
list
- 3.3. Navigating into a deck :
cd
- 3.4. Navigating out of the current deck :
cd ..
- 3.5. Adding a deck:
newdeck
- 3.6. Editing the name of a deck :
editdeck
- 3.7. Deleting a deck :
deldeck
- 3.8. Adding a card :
newcard
- 3.9. Editing a card :
editcard
- 3.10. Deleting a card :
delcard
- 3.11. Review the cards in a deck :
review
- 3.12. Flip a card in a review :
flipcard
- 3.13. Go to the next card in a review :
nextcard
- 3.14. Go to the previous card in a review :
prevcard
- 3.15. Exit review mode :
endreview
- 3.16. Card difficulty classification :
classify
- 3.17. Sort :
sort
- 3.18. Search for a deck or card :
find
- 3.19. Export deck to xml file :
export
- 3.20. Import deck from xml file :
import
- 3.21. Listing entered commands :
history
- 3.22. Undoing previous command :
undo
- 3.23. Redoing the previously undone command :
redo
- 3.24. Clearing all entries :
clear
- 3.25. Exiting Anakin :
exit
- 3.26. Autocompletion : Hit
<TAB>
- 3.27. Rank :
rank
- 3.1. Viewing help :
- 4. FAQ
- 5. Command Summary
Welcome to the Anakin User Guide!
Anakin was built for those who want to make heavy use of flashcards without the hassle of managing physical copies. More importantly, Anakin is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
Anakin started from our desire to help users organize their flashcards better, and to reduce the paper waste generated by flashcards. As students ourselves, we believe that studying should be effective and easy to plan. Thus, we have built in a scheduling system into Anakin which will help you plan out when to review your flashcards for optimal studying performance. Our scheduler uses spaced repetition which is the result of years of psychology research. Spaced repetiton embodies the idea that last minute studying has little effect. Instead, study sessions should be spread out to allow a student to best absorb infromation.
With this studying tool, we hope to not just decrease paper wastage but also to create a fun environment which can help students sustain their motivation to study throughout the semester.
To get started, head over to Section 2, “Quick Start”!
For a quick review of commands, check out Section 5, “Command Summary”. == How to Use This Guide This document is designed for users with varying levels of proficiency. Most command in the guide can be read standalone, but there are occasional references to other related commands.
To assist you, we have added sample use cases of each command in the document
-
Ensure you have Java version
9
or later installed in your Computer. -
Download the latest
Anakin.jar
here. -
Copy the file to the folder you want to use as the home folder for your copy of Anakin.
-
Double-click the file to start the app. The GUI should appear in a few seconds.
-
Type the command in the command box and press Enter to execute it.
e.g. typinghelp
and pressing Enter will open the help window. -
Some example commands you can try:
-
list
: lists all decks -
newdeck
: creates a new deck. -
delete
3
: deletes the 3rd deck shown in the current list -
exit
: exits the app
-
Refer to Section 3, “Features” for more details on the available commands.
Command Format
-
Words in
UPPER_CASE
are the parameters to be supplied by the user e.g. innewdeck n/NAME
,NAME
is a parameter which can be used asnewdeck n/John Doe
. -
Items in square brackets are optional e.g
newdeck [n/NAME]
can be used asnewdeck n/My Deck
or asnewdeck
. -
Optional items separated by - e.g.
editdeck 1 [q/Question?]-[a/Answer]
denote that at least one of the optional parameters are needed minimally to execute the command. -
Parameters can be in any order e.g. if the command specifies
q/QUESTION a/ANSWER
,a/ANSWER q/QUESTION
is also acceptable. -
Any argument followed by
…
indicates that the command is able to accept multiple arguments for that field. -
If you provide multiple parameters for fields that do not support multiple arguments, only the last argument will be accepted. I.e. If you entered
newdeck n/nameOne n/nameTwo
, the new deck will have the name "nameTwo".
Displays a list of all available decks. If inside a deck displays all cards in that deck.
Format: list
This feature allows you to filter the displayed cards by their difficulty.
Format: list [difficulty] [more difficulties]…
When inside a deck, the list
command can be used to filter the displayed cards by their difficulty, by passing
in the desired difficulty as a keyword after the command.
For example:
list hard
will display all cards with the hard
difficulty
Multiple difficulties can be specified as well, in which case all cards with a difficulty matching one of those specified will be displayed:
list easy hard
will display all cards with either an easy
or hard
difficulty.
To enter a deck identified by the INDEX_OF_DECK in the visible deck list.
Format: cd INDEX_OF_DECK
-
Enters the deck at the specified
INDEX_OF_DECK
. -
INDEX_OF_DECK must be a positive integer from 1 onwards and is based on the currently displayed list.
Examples:
-
cd 2
Enter the 2nd deck in the currently displayed deck list.
-
Note: User can
cd
into another deck while being inside a deck.
Exit the current deck and returns the user to the list of decks.
Format: cd ..
Examples:
-
cd 1
cd ..
Enter the 1st deck in the currently displayed deck list. then return back to the Anakin’s deck list (get out of the 1st deck)
Adds a new deck with the given name to Anakin
Format: newdeck n/NAME
-
This deck will contains an empty list of cards.
-
This operation is disabled when user is currently inside a deck.
-
If multiple arguments are given (i.e.
newdeck n/My First Deck n/My Second Deck
only the last valid argument is accepted for each respective field. -
User should be under Anakin’s deck list to perform this operation (not inside any decks).
Examples:
-
newdeck n/My First Deck
Edits the name of the deck at the specified index in the list.
Format: editdeck INDEX_OF_DECK n/NAME
-
INDEX_OF_DECK must be a positive integer from 1 onwards and is based on the currently displayed list.
-
The new deck will maintain the card list of the old one.
-
This operation is disabled when user navigates into a deck.
-
If multiple arguments are given (i.e.
editdeck 1 n/My First Deck n/My Second Deck
only the last valid argument is accepted for each respective field. -
User should be under Anakin’s deck list to perform this operation (not inside any decks).
Examples:
-
editdeck 1 n/My Deck
Edits the name of the first deck in the list to beMy Deck
and keeps the card list intact.
Deletes the specified deck from Anakin.
Format: deldeck INDEX_OF_DECK
-
Deletes the deck at the specified
INDEX_OF_DECK
. -
INDEX_OF_DECK
must be a positive integer from 1 onwards and is based on the currently displayed list. -
User should be under Anakin’s deck list to perform this operation (not inside any decks).
Examples:
-
list
deldeck 2
Deletes the 2nd deck that appears in the currently displayed list of decks.
Add a new card with given question and answer to the current card list.
Format: newcard q/QUESTION a/ANSWER
-
q/QUESTION
anda/ANSWER
can be in any order. -
User should be inside a deck to perform this operation.
Examples:
-
newcard q/Who are you? a/I’m Batman
-
newcard a/Ding ding ding q/What does the fox say?
When user is inside a deck, edits an existing card at the specified index. If multiple arguments are given for
question or answer, only the last valid argument is accepted for each respective field.
Format: editcard INDEX_OF_CARD [q/QUESTION]-[a/ANSWER]
-
Edits the card at the specified INDEX_OF_CARD inside the deck. The index refers to the index number shown in the list of displayed cards. The index must be a positive integer e.g. 1,2,3.
-
Existing values will be updated to the input values.
-
If any of 2 fields: [q/QUESTION] [a/ANSWER] is left empty, the old value for that field will be retained
-
At least one of the optional fields must be provided.
-
User should be inside a deck to perform this operation.
Examples:
-
editcard 1 a/New Answer
Edits the answer of the first card in the current card list to be "New Answer". If multiple arguments are given for question or answer, only the last valid argument is accepted for each respective field.
When user is inside a deck, deletes the existing card at the specified index.
Format: delcard INDEX_OF_CARD
-
Deletes the card at the specified
INDEX_OF_CARD
. -
INDEX_OF_CARD must be a positive integer from 1 onwards and is based on the currently displayed list.
-
User should be inside a deck to perform this operation.
Examples:
-
cd 1
delcard 2
Get into the first deck then deletes the 2nd card that appears in the card list.
Starts a review of the deck specified.
Format: review INDEX_OF_DECK
-
INDEX_OF_DECK must be a positive integer from 1 onwards and is based on the currently displayed list.
-
While in review mode, commands that operate on decks and cards are disabled except
endreview
,flipcard
,nextcard
,prevcard
,classify
,help
,history
,exit
. -
The application’s data will only be stored after executing
endreview
command.
View the other side of the current card during a review.
Format: flipcard
Examples:
-
review 1
flipcard
flipcard
Reviews the first deck on the list. You will see the first question card. Upon firstflipcard
, you will see the answer on the back of the card. When you executeflipcard
again, you will see the question card once more.
Views the subsequent card in the deck.
Format: nextcard
ℹ️
|
When you are at the last card of the deck, executing |
Views the previous card in the deck.
Format: prevcard
ℹ️
|
When you are at the first card of the deck, executing |
Exits the review and returns to the editing menu
Format: endreview
ℹ️
|
Executing |
Allocates a difficulty (easy, normal, hard) to the card currently being reviewed.
This indicates how you felt about the difficulty of the card, relative to your performance. This rating will be taken
into consideration when scheduling cards for review. For example, a card rated easy
will show up less often compared
to a card rated hard
.
Format: classify DIFFICULTY
-
The DIFFICULTY parameter should be one of the strings: {
easy
,normal
,hard
} -
The DIFFICULTY parameter is case-insensitive
-
By default, cards are assigned a
normal
difficulty
Example
-
You decide to review a deck.
-
You encounter a difficult question. You would like to document this for future revision. Simply type in
classify
, followed by the desired difficulty (in this case,hard
). -
Upon ending the review, you should be able to see the updated difficulty classification on your cards.
Sort the current list in lexicographical order.
-
If user is currently inside a deck, sort all cards according to their questions.
-
If user is not in a deck, sort all decks according to the their names.
Format: sort
Search decks by names or cards by questions.
-
If user is currently in a deck, find all cards which contain the specific keywords.
-
If user is not in a deck, find decks.
Format: find KEYWORD [MORE_KEYWORDS]…
-
The search is case insensitive. e.g
hans
will matchHans
-
The order of the keywords does not matter. e.g.
Hans Bo
will matchBo Hans
-
Only the name of the deck or the question of the card is searched.
-
Decks or cards matching at least one keyword will be returned (i.e.
OR
search). e.g.Hans Bo
will returnHans Gruber
,Bo Yang
-
If user inputs 1 keyword, partial word will be matched. e.g 'Han' will match `Hans'
-
If user inputs multiple keywords, only full words will be matched e.g. 'Han Solo' will match 'Han non-solo' but will not match 'Hans Soooolo'
Examples:
-
find Algo
Returnsalgo
andEasy Algo
-
User is not inside any decks:
-
find Bio Chem Physics
Returns any decks containingBio
,Chem
, orPhysics
in their name. -
find insert
Returnsinsert
,inserted
,inserting
or any decks of which name contains these words.
-
-
User is inside a deck:
find John Snow
Returns any cards containingJohn
orSnow
in their questions.
To create an xml
file of the deck at INDEX_OF_DECK.
Format: export INDEX_OF_DECK
-
INDEX_OF_DECK must be a positive integer from 1 onwards and is based on the currently displayed list.
-
This operation is disabled when user navigates into a deck.
-
The xml file will be created in the same directory as the Anakin.jar file.
Example:
-
1. First, display all the decks in Anakin using
list
.
-
2. Say you want to export "Geography" (the 3rd deck), simply enter the command:
export 3
. You should see the following message:
"Geography.xml" will be created in the same directory as the Anakin.jar file.
To import a deck from the xml
file at the specified FILEPATH.
Format: import FILEPATH
-
You must include the filename of the target file in
FILEPATH
. -
This operation is disabled when you navigate into a deck.
-
The default base directory is the directory that the Anakin.jar file is in.
Examples:
Say you want to import a deck called "Geography" and you have the Geography.xml
file in the same folder as Anakin.jar.
-
Simply enter
import Geography.xml
and Anakin will import the deck "Geography".
Before
After
-
If you want to import a deck that is located elsewhere, for example the file is in Desktop, you can enter
import
followed by the full filepath (something like:import C:/Users/Admin/Desktop/My Deck2.xml
) and Anakin will be able to import the deck.
Lists all the commands that you have entered in reverse chronological order.
Format: history
ℹ️
|
Pressing the ↑ and ↓ arrows will display the previous and next input respectively in the command box. |
Restores Anakin to the state before the previous undoable command was executed.
Format: undo
ℹ️
|
Undoable commands: those commands that modify the state of Anakin.
( |
Examples:
-
deldeck 1
undo
(reverses thedeldeck 1
command) -
history
undo
Theundo
command fails as there are no undoable commands executed previously. -
deldeck 1
clear
undo
(reverses theclear
command)
undo
(reverses thedeldeck 1
command)
Reverses the most recent undo
command.
Format: redo
Examples:
-
deldeck 1
undo
(reverses thedeldeck 1
command)
redo
(reapplies thedeldeck 1
command) -
delcard 1
redo
Theredo
command fails as there are noundo
commands executed previously. -
delcard 1
clear
undo
(reverses theclear
command)
undo
(reverses thedelcard 1
command)
redo
(reapplies thedelcard 1
command)
redo
(reapplies theclear
command)
Hit <TAB> for autocompletion so you don’t have to remember verbose commands. If there is an autocompletion available, hitting <TAB> will replace the current text in the command box with the autocompletion text.
Examples:
-
Suppose you are attempting to create a new card.
Image: Partially completed newcard
command.
-
Just hit <TAB> and you will instantly get the desired result
Image: After pressing <TAB> the command is automatically completed!
ℹ️
|
If the command box is empty, autocompletion will default to |
Warning
|
This feature does not work when trailing or preceding whitespace is included in the command. |
Use this command to sort all cards by a user’s cumulative performance score on each card.
Format: rank
Examples: Suppose you are studying for an important exam, and you want to find out which cards you performed poorly on so you can review them.
-
Classify cards as described in the
classify
section above and then typerank
Image: Appearance of cards before sorting by performance
-
Type
rank
and you will instantly get the desired result
Image: Appearance of cards after sorting by performance. As can be seen, harder cards move to the top.
ℹ️
|
The indicator in the card panel only shows the most recent classification of the card while the scheduling algorithm takes into account all past reviews. As such, cards labelled HARD may not always be above cards ranked NORMAL. |
Q: How do I transfer my data to another Computer?
A: Export all your decks, copy the .xml files to the other Computer, then use the import command to import your decks.
Q: Why is it called Anakin?
A: Because using CLI is as cool and mysterious as using the Force.
A convenient cheat sheet of commands
Command | What does it do? |
---|---|
|
Lists all available commands and their respective formats. |
|
Displays a list of all available decks. If inside a deck displays all cards in that deck. |
|
Navigates into the deck at INDEX. |
|
Adds a new deck. |
|
Edits the name of the deck at INDEX. |
|
Deletes the deck at INDEX. |
|
Adds a new card in the current deck. |
|
Edits the details of the card at INDEX. |
|
Deletes the card at INDEX. |
|
Review the cards of the deck at INDEX. |
|
View the flipside of the current card during a review. |
|
Views the subsequent card in the deck. |
|
Views the previous card in the deck. |
|
Exits the review. |
|
Classifies the current card into one of the following categories: {‘easy’, ‘normal' , ‘hard’} |
|
Sorts the displayed list of decks by name. |
|
Sort the list of cards by performance |
|
Finds decks with names that contain any of the given keywords. |
|
Exports the deck at the specified INDEX. (Default location is the same folder as Anakin) |
|
Imports a deck from the |
|
List all entered commands in reverse chronological order. |
|
Undo previous command. |
|
Redo previously undone command. |
|
Clear all decks and cards. |
|
Exits the program. |