Documentation improvements.

This commit is contained in:
Cutieguwu
2025-04-23 19:37:49 -04:00
parent b8db749a50
commit bfd135df94
2 changed files with 21 additions and 2 deletions

View File

@@ -14,6 +14,9 @@ pub enum Event {
} }
impl Event { impl Event {
/// Returns the terrain delta between the self and given following events.
/// Returns `None` if no delta can be calculated between
/// `self` and following events.
pub fn delta(&self, following: &Self) -> Option<i8> { pub fn delta(&self, following: &Self) -> Option<i8> {
// Clean this trash spaghetti code up. // Clean this trash spaghetti code up.
@@ -68,6 +71,8 @@ impl Event {
} }
} }
/// Returns the team for variants which possess this attribute.
/// Errors if `self` has no team attribute.
pub fn team(&self) -> Result<Team, error::NoTeamAttribute> { pub fn team(&self) -> Result<Team, error::NoTeamAttribute> {
match self { match self {
Self::Kickoff(team) => Ok(team.to_owned()), Self::Kickoff(team) => Ok(team.to_owned()),
@@ -76,6 +81,8 @@ impl Event {
} }
} }
/// Returns the team for variants which possess this attribute.
/// Returns `None` if `self` has no team attribute.
pub fn quarter(&self) -> Option<Quarter> { pub fn quarter(&self) -> Option<Quarter> {
if let Event::Quarter(quarter) = self { if let Event::Quarter(quarter) = self {
Some(quarter.to_owned()) Some(quarter.to_owned())

View File

@@ -10,7 +10,7 @@ pub struct Game {
} }
impl Game { impl Game {
/// Returns the teams of this game. /// Returns the teams that played.
pub fn teams(&self) -> Result<Vec<Team>, error::TeamsError> { pub fn teams(&self) -> Result<Vec<Team>, error::TeamsError> {
let ignore: Vec<Team> = self let ignore: Vec<Team> = self
.flags .flags
@@ -41,6 +41,7 @@ impl Game {
} }
} }
/// Returns all of the terrain deltas of a team.
pub fn deltas(&self, team: Team) -> Vec<i8> { pub fn deltas(&self, team: Team) -> Vec<i8> {
let events: Vec<Event> = self let events: Vec<Event> = self
.team_events(team) .team_events(team)
@@ -69,6 +70,7 @@ impl Game {
deltas deltas
} }
/// Returns all of the plays of a team.
pub fn team_plays(&self, team: Team) -> TeamPlays { pub fn team_plays(&self, team: Team) -> TeamPlays {
TeamPlays( TeamPlays(
self.team_events(team) self.team_events(team)
@@ -88,7 +90,7 @@ impl Game {
/// The average number of plays in a quarter. /// The average number of plays in a quarter.
pub fn avg_plays_per_quarter(&self, team: Team) -> f32 { pub fn avg_plays_per_quarter(&self, team: Team) -> f32 {
let periods: Vec<Period> = Quarter::iter() let periods: Vec<Period> = Quarter::iter()
.filter_map(|quarter| Some(self.to_owned().get_period(quarter.to_owned())).to_owned()) .filter_map(|quarter| Some(self.get_period(quarter.to_owned())).to_owned())
.collect(); .collect();
let quarterly_avgs: Vec<f32> = periods let quarterly_avgs: Vec<f32> = periods
@@ -105,6 +107,7 @@ impl Game {
quarterly_avgs.iter().sum::<f32>() / quarterly_avgs.len() as f32 quarterly_avgs.iter().sum::<f32>() / quarterly_avgs.len() as f32
} }
/// Returns the average delta of a team.
pub fn avg_delta(&self, team: Team) -> f32 { pub fn avg_delta(&self, team: Team) -> f32 {
let deltas = self.deltas(team); let deltas = self.deltas(team);
@@ -112,6 +115,7 @@ impl Game {
deltas.iter().sum::<i8>() as f32 / deltas.len() as f32 deltas.iter().sum::<i8>() as f32 / deltas.len() as f32
} }
/// Returns the average delta for a team's positive deltas.
pub fn avg_gain(&self, team: Team) -> f32 { pub fn avg_gain(&self, team: Team) -> f32 {
let deltas: Vec<u8> = self let deltas: Vec<u8> = self
.deltas(team) .deltas(team)
@@ -129,6 +133,7 @@ impl Game {
deltas.iter().sum::<u8>() as f32 / deltas.len() as f32 deltas.iter().sum::<u8>() as f32 / deltas.len() as f32
} }
/// Returns the average delta for a team's negative deltas.
pub fn avg_loss(&self, team: Team) -> f32 { pub fn avg_loss(&self, team: Team) -> f32 {
let deltas: Vec<i8> = self let deltas: Vec<i8> = self
.deltas(team) .deltas(team)
@@ -145,6 +150,7 @@ impl Game {
deltas.iter().sum::<i8>() as f32 / deltas.len() as f32 deltas.iter().sum::<i8>() as f32 / deltas.len() as f32
} }
/// Returns the number of penalties that a team experienced.
pub fn penalties(&self, team: Team) -> usize { pub fn penalties(&self, team: Team) -> usize {
self.team_events(team) self.team_events(team)
.0 .0
@@ -160,6 +166,7 @@ impl Game {
.len() .len()
} }
/// Returns the requested quarter.
pub fn get_period(&self, quarter: Quarter) -> Period { pub fn get_period(&self, quarter: Quarter) -> Period {
let mut record = false; let mut record = false;
@@ -183,6 +190,7 @@ impl Game {
} }
} }
/// Returns all events relevent to a team's deltas and score.
pub fn team_events(&self, team: Team) -> TeamEvents { pub fn team_events(&self, team: Team) -> TeamEvents {
let mut events: Vec<Event> = vec![]; let mut events: Vec<Event> = vec![];
let mut first = true; let mut first = true;
@@ -221,6 +229,7 @@ impl Game {
#[derive(Debug)] #[derive(Debug)]
pub struct TeamEvents(pub Vec<Event>); pub struct TeamEvents(pub Vec<Event>);
#[derive(Debug)]
pub struct TeamPlays(pub Vec<Play>); pub struct TeamPlays(pub Vec<Play>);
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@@ -230,6 +239,7 @@ pub struct Period {
} }
impl Period { impl Period {
/// Returns all events relevent to a team's deltas and score.
pub fn team_events(&self, team: Team) -> Vec<Event> { pub fn team_events(&self, team: Team) -> Vec<Event> {
let mut events: Vec<Event> = vec![]; let mut events: Vec<Event> = vec![];
let mut first = true; let mut first = true;
@@ -263,6 +273,7 @@ impl Period {
events events
} }
/// Returns all of the plays of a team.
pub fn team_plays(&self, team: Team) -> usize { pub fn team_plays(&self, team: Team) -> usize {
self.team_events(team) self.team_events(team)
.iter() .iter()
@@ -277,6 +288,7 @@ impl Period {
.len() .len()
} }
/// Returns true if the current period is overtime.
pub fn is_overtime(&self) -> bool { pub fn is_overtime(&self) -> bool {
if let Quarter::Overtime(_) = self.period { if let Quarter::Overtime(_) = self.period {
true true