A library used to recite things.
Based on SuperMemo 2 algorithm.
It is published through npm
now.
If you want to build it yourself, use gulp
:
npm install
gulp build
The library uses ES2015 module standards, so (if you are using legacy js) .default
is required in require
:
const Recitus = require('./lib/recitus').default;
var recitus = new Recitus('path/to/vocab', 'path/to/bank');
Vocabulary files should be provided in json as an array of objects. Each word have two fields: q
and a
, indicating question(such as a word) and answer(such as its meaning).
A simple one:
[
{ "q": "1 + 1 = ?", "a": "2" },
{ "q": "apple", "a": "a kind of fruit" },
...
]
SuperMemo 2 use an integer ranging from 0-5 to check how much you memorize a word, check the list:
- 5: perfect response
- 4: correct response after a hesitation
- 3: correct response recalled with serious difficulty
- 2: incorrect response; where the correct one seemed easy to recall
- 1: incorrect response; the correct one remembered
- 0: complete blackout
The feedback is given by the user.
Create a main instance.
vocabPath: path to the vocabulary path.
bankPath: path to store your reciting progress.
Notice: it's a sync method. If bankPath doesn't exist, a initial one will be created automatically.
Start today's recite, all words should be reviewed and delta new words (or less if the whole vocabulary are learned) will be stored in the wordlist.
delta: the number of extra new words to be added to the wordlist.
Pick a word at random from the wordlist.
returns: an object with properties q
and a
, representing the word.
Notice: can only be called after #start is called.
Update a word in the wordlist through the user's feedback.
q: the user's feedback in 0-5, which is explained above.
Notice: only one word is picked each time, so #update must be called after #pick.
Check if all the words today are reviewed.
returns: true or false.
Stop the recite and save the progress.
Notice: it's a sync method.
Tiny
MIT