Module: AnkiConnect::Client::Cards
- Included in:
- AnkiConnect::Client
- Defined in:
- lib/anki_connect/cards.rb
Overview
Methods to query, modify, suspend, and manage individual flashcards.
Instance Method Summary collapse
-
#answer_cards(answers) ⇒ Array<Boolean>
Answers cards programmatically.
-
#card_due?(card_id) ⇒ Boolean
Checks whether one card is due for review.
-
#card_due_statuses(card_ids) ⇒ Array<Boolean>
Gets due status for each card, preserving input order.
-
#card_intervals(card_ids, complete: false) ⇒ Array<Integer>+
Gets intervals for cards.
-
#card_modification_times(card_ids) ⇒ Array<Hash>
Gets modification times for cards.
-
#card_suspended?(card_id) ⇒ Boolean
Checks whether one card is suspended.
-
#card_suspension_statuses(card_ids) ⇒ Array<Boolean, nil>
Gets suspension status for each card, preserving input order.
-
#cards(card_ids) ⇒ Array<Hash>
Gets detailed information about cards.
-
#ease_factors(card_ids) ⇒ Array<Integer, nil>
Gets ease factors for cards.
-
#forget_cards(card_ids) ⇒ nil
Resets cards to "new" status.
-
#note_ids_for_cards(card_ids) ⇒ Array<Integer>
Gets unique parent note IDs for cards.
-
#relearn_cards(card_ids) ⇒ nil
Makes cards enter "relearning" state.
-
#search_cards(query) ⇒ Array<Integer>
Searches for cards matching a query.
-
#set_card_values(card_id, fields, warning_check: false) ⇒ Array, Boolean
Sets raw database values for a single card.
-
#set_due_date(card_ids, days) ⇒ Boolean
Sets due date for cards.
-
#set_ease_factors(card_ids, factors) ⇒ Array<Boolean>
Sets ease factors for cards.
-
#suspend_cards(card_ids) ⇒ Boolean
Suspends cards.
-
#unsuspend_cards(card_ids) ⇒ nil
Unsuspends cards.
Instance Method Details
#answer_cards(answers) ⇒ Array<Boolean>
Answers cards programmatically.
153 154 155 156 157 158 159 160 161 162 |
# File 'lib/anki_connect/cards.rb', line 153 def answer_cards(answers) normalized = answers.map do |answer| answer = normalize_keys(answer, ANSWER_KEYS, name: 'answer') missing_keys = ANSWER_KEYS.values.reject { |key| answer.key?(key) } raise ArgumentError, "missing answer keys: #{missing_keys.join(', ')}" unless missing_keys.empty? answer end request(:answerCards, answers: normalized) end |
#card_due?(card_id) ⇒ Boolean
Checks whether one card is due for review.
80 81 82 |
# File 'lib/anki_connect/cards.rb', line 80 def card_due?(card_id) request(:areDue, cards: [card_id]).first end |
#card_due_statuses(card_ids) ⇒ Array<Boolean>
Gets due status for each card, preserving input order.
88 89 90 |
# File 'lib/anki_connect/cards.rb', line 88 def card_due_statuses(card_ids) request(:areDue, cards: card_ids) end |
#card_intervals(card_ids, complete: false) ⇒ Array<Integer>+
Gets intervals for cards.
97 98 99 |
# File 'lib/anki_connect/cards.rb', line 97 def card_intervals(card_ids, complete: false) request(:getIntervals, cards: card_ids, complete: complete) end |
#card_modification_times(card_ids) ⇒ Array<Hash>
Gets modification times for cards.
121 122 123 |
# File 'lib/anki_connect/cards.rb', line 121 def card_modification_times(card_ids) request(:cardsModTime, cards: card_ids) end |
#card_suspended?(card_id) ⇒ Boolean
Checks whether one card is suspended.
64 65 66 |
# File 'lib/anki_connect/cards.rb', line 64 def card_suspended?(card_id) request(:suspended, card: card_id) end |
#card_suspension_statuses(card_ids) ⇒ Array<Boolean, nil>
Gets suspension status for each card, preserving input order.
72 73 74 |
# File 'lib/anki_connect/cards.rb', line 72 def card_suspension_statuses(card_ids) request(:areSuspended, cards: card_ids) end |
#cards(card_ids) ⇒ Array<Hash>
Gets detailed information about cards.
129 130 131 |
# File 'lib/anki_connect/cards.rb', line 129 def cards(card_ids) request(:cardsInfo, cards: card_ids) end |
#ease_factors(card_ids) ⇒ Array<Integer, nil>
Gets ease factors for cards.
17 18 19 |
# File 'lib/anki_connect/cards.rb', line 17 def ease_factors(card_ids) request(:getEaseFactors, cards: card_ids) end |
#forget_cards(card_ids) ⇒ nil
Resets cards to "new" status.
137 138 139 |
# File 'lib/anki_connect/cards.rb', line 137 def forget_cards(card_ids) request(:forgetCards, cards: card_ids) end |
#note_ids_for_cards(card_ids) ⇒ Array<Integer>
Gets unique parent note IDs for cards.
113 114 115 |
# File 'lib/anki_connect/cards.rb', line 113 def note_ids_for_cards(card_ids) request(:cardsToNotes, cards: card_ids) end |
#relearn_cards(card_ids) ⇒ nil
Makes cards enter "relearning" state.
145 146 147 |
# File 'lib/anki_connect/cards.rb', line 145 def relearn_cards(card_ids) request(:relearnCards, cards: card_ids) end |
#search_cards(query) ⇒ Array<Integer>
Searches for cards matching a query.
105 106 107 |
# File 'lib/anki_connect/cards.rb', line 105 def search_cards(query) request(:findCards, query: query) end |
#set_card_values(card_id, fields, warning_check: false) ⇒ Array, Boolean
Sets raw database values for a single card. This low-level operation can corrupt scheduling data when used incorrectly.
39 40 41 42 |
# File 'lib/anki_connect/cards.rb', line 39 def set_card_values(card_id, fields, warning_check: false) request(:setSpecificValueOfCard, card: card_id, keys: fields.keys, newValues: fields.values, warning_check: warning_check) end |
#set_due_date(card_ids, days) ⇒ Boolean
Sets due date for cards.
169 170 171 |
# File 'lib/anki_connect/cards.rb', line 169 def set_due_date(card_ids, days) request(:setDueDate, cards: card_ids, days: days) end |
#set_ease_factors(card_ids, factors) ⇒ Array<Boolean>
Sets ease factors for cards.
26 27 28 29 30 |
# File 'lib/anki_connect/cards.rb', line 26 def set_ease_factors(card_ids, factors) raise ArgumentError, 'card_ids and factors must have the same length' unless card_ids.length == factors.length request(:setEaseFactors, cards: card_ids, easeFactors: factors) end |
#suspend_cards(card_ids) ⇒ Boolean
Suspends cards.
48 49 50 |
# File 'lib/anki_connect/cards.rb', line 48 def suspend_cards(card_ids) request(:suspend, cards: card_ids) end |
#unsuspend_cards(card_ids) ⇒ nil
Unsuspends cards.
56 57 58 |
# File 'lib/anki_connect/cards.rb', line 56 def unsuspend_cards(card_ids) request(:unsuspend, cards: card_ids) end |