Use decimal number as foreign ease (like '2.5')

This commit is contained in:
RumovZ 2022-05-10 10:13:17 +02:00
parent 8f1bba6c07
commit dbeca4310b
5 changed files with 6 additions and 8 deletions

View file

@ -70,6 +70,7 @@ MODEL_STD = 0
MODEL_CLOZE = 1 MODEL_CLOZE = 1
STARTING_FACTOR = 2500 STARTING_FACTOR = 2500
STARTING_FACTOR_FRACTION = STARTING_FACTOR / 1000
HELP_SITE = "https://docs.ankiweb.net/" HELP_SITE = "https://docs.ankiweb.net/"

View file

@ -10,7 +10,7 @@ import json
from dataclasses import asdict, dataclass, field from dataclasses import asdict, dataclass, field
from typing import Union from typing import Union
from anki.consts import STARTING_FACTOR from anki.consts import STARTING_FACTOR_FRACTION
from anki.decks import DeckId from anki.decks import DeckId
from anki.models import NotetypeId from anki.models import NotetypeId
@ -74,7 +74,7 @@ class ForeignNotetype:
class ForeignCard: class ForeignCard:
due: int = 0 due: int = 0
ivl: int = 1 ivl: int = 1
factor: int = STARTING_FACTOR factor: float = STARTING_FACTOR_FRACTION
reps: int = 0 reps: int = 0
lapses: int = 0 lapses: int = 0

View file

@ -143,16 +143,13 @@ class MnemoCard:
def foreign_card(self) -> ForeignCard: def foreign_card(self) -> ForeignCard:
return ForeignCard( return ForeignCard(
factor=self.anki_ease(), factor=self.easiness,
reps=self.reps, reps=self.reps,
lapses=self.lapses, lapses=self.lapses,
ivl=self.anki_interval(), ivl=self.anki_interval(),
due=self.next_rep, due=self.next_rep,
) )
def anki_ease(self) -> int:
return int(self.easiness * 1000)
def anki_interval(self) -> int: def anki_interval(self) -> int:
return max(1, (self.next_rep - self.last_rep) // 86400) return max(1, (self.next_rep - self.last_rep) // 86400)

View file

@ -182,7 +182,7 @@ impl ForeignCard {
fn into_native(self, note_id: NoteId, template_idx: u16, deck_id: DeckId) -> Card { fn into_native(self, note_id: NoteId, template_idx: u16, deck_id: DeckId) -> Card {
let mut card = Card::new(note_id, template_idx, deck_id, self.due); let mut card = Card::new(note_id, template_idx, deck_id, self.due);
card.interval = self.ivl; card.interval = self.ivl;
card.ease_factor = self.factor; card.ease_factor = (self.factor * 1000.).round() as u16;
card.reps = self.reps; card.reps = self.reps;
card.lapses = self.lapses; card.lapses = self.lapses;
card card

View file

@ -31,7 +31,7 @@ pub struct ForeignNote {
pub struct ForeignCard { pub struct ForeignCard {
pub due: i32, pub due: i32,
pub ivl: u32, pub ivl: u32,
pub factor: u16, pub factor: f32,
pub reps: u32, pub reps: u32,
pub lapses: u32, pub lapses: u32,
} }