Class: Fsrs::Card
- Inherits:
-
Object
- Object
- Fsrs::Card
- Defined in:
- lib/fsrs/fsrs.rb
Overview
Card
Instance Attribute Summary collapse
-
#difficulty ⇒ Object
Returns the value of attribute difficulty.
-
#due ⇒ Object
Returns the value of attribute due.
-
#elapsed_days ⇒ Object
Returns the value of attribute elapsed_days.
-
#lapses ⇒ Object
Returns the value of attribute lapses.
-
#last_review ⇒ Object
Returns the value of attribute last_review.
-
#reps ⇒ Object
Returns the value of attribute reps.
-
#scheduled_days ⇒ Object
Returns the value of attribute scheduled_days.
-
#stability ⇒ Object
Returns the value of attribute stability.
-
#state ⇒ Object
Returns the value of attribute state.
Class Method Summary collapse
Instance Method Summary collapse
- #deep_clone ⇒ Object
- #get_retrievability(now) ⇒ Object
-
#initialize ⇒ Card
constructor
A new instance of Card.
- #to_h ⇒ Object
Constructor Details
Instance Attribute Details
#difficulty ⇒ Object
Returns the value of attribute difficulty.
203 204 205 |
# File 'lib/fsrs/fsrs.rb', line 203 def difficulty @difficulty end |
#due ⇒ Object
Returns the value of attribute due.
203 204 205 |
# File 'lib/fsrs/fsrs.rb', line 203 def due @due end |
#elapsed_days ⇒ Object
Returns the value of attribute elapsed_days.
203 204 205 |
# File 'lib/fsrs/fsrs.rb', line 203 def elapsed_days @elapsed_days end |
#lapses ⇒ Object
Returns the value of attribute lapses.
203 204 205 |
# File 'lib/fsrs/fsrs.rb', line 203 def lapses @lapses end |
#last_review ⇒ Object
Returns the value of attribute last_review.
203 204 205 |
# File 'lib/fsrs/fsrs.rb', line 203 def last_review @last_review end |
#reps ⇒ Object
Returns the value of attribute reps.
203 204 205 |
# File 'lib/fsrs/fsrs.rb', line 203 def reps @reps end |
#scheduled_days ⇒ Object
Returns the value of attribute scheduled_days.
203 204 205 |
# File 'lib/fsrs/fsrs.rb', line 203 def scheduled_days @scheduled_days end |
#stability ⇒ Object
Returns the value of attribute stability.
203 204 205 |
# File 'lib/fsrs/fsrs.rb', line 203 def stability @stability end |
#state ⇒ Object
Returns the value of attribute state.
203 204 205 |
# File 'lib/fsrs/fsrs.rb', line 203 def state @state end |
Class Method Details
.from_h(hash) ⇒ Object
240 241 242 243 244 245 246 247 248 249 250 251 252 |
# File 'lib/fsrs/fsrs.rb', line 240 def self.from_h(hash) card = new hash.each do |key, value| if %w[due last_review].include?(key) && value.is_a?(String) # Handle DateTime fields from JSON input card.instance_variable_set("@#{key}", DateTime.parse(value)) else # Handle regular fields and DateTime objects from hash input card.instance_variable_set("@#{key}", value) end end card end |
Instance Method Details
#deep_clone ⇒ Object
226 227 228 |
# File 'lib/fsrs/fsrs.rb', line 226 def deep_clone Marshal.load(Marshal.dump(self)) end |
#get_retrievability(now) ⇒ Object
216 217 218 219 220 221 222 223 224 |
# File 'lib/fsrs/fsrs.rb', line 216 def get_retrievability(now) decay = -0.5 factor = (0.9**(1 / decay)) - 1 return nil unless @state == State::REVIEW elapsed_days = [0, (now - @last_review).to_i].max (1 + (factor * elapsed_days / @stability))**decay end |
#to_h ⇒ Object
230 231 232 233 234 235 236 237 238 |
# File 'lib/fsrs/fsrs.rb', line 230 def to_h { state: @state, due: @due, stability: @stability, difficulty: @difficulty, elapsed_days: @elapsed_days, scheduled_days: @scheduled_days, reps: @reps, lapses: @lapses, last_review: @last_review } end |