summary refs log tree commit diff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorSophie Forrest <git@sophieforrest.com>2024-09-10 12:41:44 +1200
committerSophie Forrest <git@sophieforrest.com>2024-09-10 12:41:44 +1200
commitc37c398a30f42da130142f0b2271d74b2c0465e1 (patch)
tree74c716dac8db7dc6d64d389097fefa0dcc076544 /src/lib.rs
parente8406706852969e8e6a3194efb4c069b5ffdbe21 (diff)
feat: downloading
Downloading is now done with reqwest.
Diffstat (limited to '')
-rw-r--r--src/lib.rs16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/lib.rs b/src/lib.rs
index d156c42..1246a76 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -5,10 +5,7 @@
 //! This is a simple program capable of parsing VUWs courses from the registry. It cannot correctly
 //! parse prerequisites, however.
 
-use std::{
-	collections::{HashMap, HashSet},
-	fmt,
-};
+use std::collections::{HashMap, HashSet};
 
 use scraper::{CaseSensitivity, ElementRef, Html, Selector};
 use serde::{Deserialize, Serialize};
@@ -28,7 +25,7 @@ pub struct Course<'a> {
 	pub offered: bool,
 
 	/// Amount of points this course is worth.
-	pub points: u8,
+	pub points: f32,
 
 	/// Courses that must be taken before this course.
 	pub prerequisites: Vec<&'a str>,
@@ -100,7 +97,7 @@ impl<'a> Course<'a> {
 			info!("{:?}", points_slice);
 
 			let points = points_slice
-				.parse::<u8>()
+				.parse::<f32>()
 				.expect("should correctly parse points");
 			info!("{:?}", points);
 
@@ -169,6 +166,9 @@ impl<'a> Course<'a> {
 					.expect("course reference number should exist")
 					.get(4..)
 					.expect("course reference number digits should start at this indice")
+					.split_whitespace()
+					.next()
+					.expect("course reference number should exist")
 					.parse::<u16>()
 					.expect("course reference number should be parseable"),
 				Trimester::try_from(
@@ -189,7 +189,7 @@ impl Default for Course<'_> {
 		Self {
 			description: Option::default(),
 			offered: true,
-			points: u8::default(),
+			points: f32::default(),
 			prerequisites: Vec::default(),
 			restrictions: Vec::default(),
 			subject_areas: HashSet::default(),
@@ -266,7 +266,7 @@ impl TryFrom<&str> for Trimester {
 			"1+2/3" => Ok(Self::OneTwo),
 			"2+3/3" => Ok(Self::TwoThree),
 			"3+1/3" => Ok(Self::ThreeOne),
-			"1+2+3/3" => Ok(Self::FullYear),
+			"1+2+3/3" | "2+3+1/3" | "full year" => Ok(Self::FullYear),
 			_ => Err(String::from("Invalid trimester.")),
 		}
 	}