applyToCardState method

dynamic applyToCardState (CardState prev, DateTime ts, Rating rating)

Implementation

static applyToCardState(CardState prev, DateTime ts, Rating rating) {
  if (prev.lastReviewed != null && prev.lastReviewed.isAfter(ts)) {
    throw ("Cannot apply review before current lastReviewed");
  }

  if (prev.mode == "learning") {
    return applyToLearningCardState(prev, ts, rating);
  } else if (prev.mode == "reviewing") {
    return applyToReviewingCardState(prev, ts, rating);
  } else if (prev.mode == "lapsed") {
    return applyToLapsedCardState(prev, ts, rating);
  }

  throw Exception("Card mode is incorrect");
}