diff --git a/src/typer.rs b/src/typer.rs index a02d928..57889a1 100644 --- a/src/typer.rs +++ b/src/typer.rs @@ -13,7 +13,6 @@ pub struct Typer { should_display_result: bool, words_to_write: WordList, chars_written: Vec, - current_num_of_words: u16, wpm: u16, errors: u16, start_timestamp: Option, @@ -27,7 +26,6 @@ impl Typer { should_display_result: false, words_to_write: WordList::new(50), chars_written: Vec::new() as Vec, - current_num_of_words: 0, wpm: 0, errors: 0, start_timestamp: None @@ -60,9 +58,7 @@ impl Typer { self.should_quit = true; } Backspace => { - if self.chars_written.pop().unwrap() == ' ' && self.current_num_of_words > 0 { - self.current_num_of_words -= 1; - } + _ = self.chars_written.pop(); } _ => { if code.as_char().is_some() { @@ -79,16 +75,12 @@ impl Typer { self.errors += 1; } - // Increase the number of written words on space. - if c == ' ' { - self.current_num_of_words += 1; - } - // Update WPM match self.start_timestamp.unwrap().elapsed() { Ok(elapsed) => { if elapsed.as_secs() != 0 { - self.wpm = (f32::from(self.current_num_of_words) / (elapsed.as_secs() as f32 / 60_f32)) as u16; + // WPM formula = (chars / 5) / mins, According to reddit https://www.reddit.com/r/typing/comments/1h014p7/comment/lz0rsl2/ + self.wpm = ((self.chars_written.len() as f32 / 5_f32) / (elapsed.as_secs() as f32 / 60_f32)) as u16; } } Err(_e) => {