Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix parser bug caused by edge browser #157

Merged
merged 1 commit into from
Oct 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions packages/docs/pdf_ctrl_c_ctrl_v_5.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
גיליון ציונים
אנונימי אנונימי ת.ז. 123456789 נכון לתאריך: 2022-09-28
פקולטה: הנדסת תעשיה וניהול לתואר: מוסמך למדעים בהנדסת נתונים ומידע
ממוצע מצטבר: 0.86 שיעור הצלחות מצטבר: 96.0 נקודות מצטברות: 5.108
זיכויים
מס' מקצוע שם מקצוע נקודות ציון
103015 השלמות מתמטיקה 0.0 פטור ללא ניקוד
113013 השלמות פיסיקה 1-סווג חלק א' 0.0 פטור ללא ניקוד
320101 פעילות חברתית 1 0.1 פטור עם ניקוד
320102 פעילות חברתית 2 0.1 פטור עם ניקוד
324033 אנגלית טכנית-מתקדמים ב' 0.3 פטור עם ניקוד
סה"כ נקודות זיכוי: 0.5
סמסטר חורף 19/2018) תשע"ט)
מס' מקצוע שם מקצוע נקודות ציון
104031 חשבון אינפיניטסימלי 1מ' 5.5 62
104166 אלגברה אמ' 5.5 70
114077 פיסיקה 1ל 5.2 78
234117 מבוא למדעי המחשב ח' 0.4 85
ממוצע סמסטר: 1.74 שיעור הצלחות סמסטר: 00.1 נקודות סמסטר: 5.17
סמסטר אביב 19/2018) תשע"ט)
מס' מקצוע שם מקצוע נקודות ציון
094201 מבוא להנדסת נתונים ומידע 5.4 66
094210 ארגון המחשב ומערכות הפעלה 5.3 73
094346 מתמטיקה דיסקרטית 0.3 74
104032 חשבון אינפיניטסימלי 2מ' 0.5 65
324986 מודיעין וביטחון לאומי 0.2 90
ממוצע סמסטר: 8.72 שיעור הצלחות סמסטר: 00.1 נקודות סמסטר: 0.18
אנונימי אנונימי ת.ז. 123456789 נכון לתאריך: 2022-09-28
פקולטה: הנדסת תעשיה וניהול לתואר: מוסמך למדעים בהנדסת נתונים ומידע
ממוצע מצטבר: 0.92 שיעור הצלחות מצטבר: 96.0 נקודות מצטברות: 5.158
סמסטר חורף 20/2019) תש"ף)
מס' מקצוע שם מקצוע נקודות ציון
094241 ניהול מסדי נתונים 0.3 87
094412 הסתברות מ 0.4 51*
094412 הסתברות מ 0.4 92*
095295 שיטות אלגבריות בהנדסת נתונים 5.3 70*
095295 שיטות אלגבריות בהנדסת נתונים 5.3 עבר
324948" משחקי גבורה" - מלחמה בקולנוע 0.2 98
ממוצע סמסטר: 2.84 שיעור הצלחות סמסטר: 00.1 נקודות סמסטר: 0.20
סמסטר אביב 20/2019) תש"ף)
מס' מקצוע שם מקצוע נקודות ציון
094314 מודלים סטוכסטיים בחקר בצועים 5.3 89
094412 הסתברות מ 0.4 לא השלים
094423 מבוא לסטטיסטיקה 5.3 75
096327 מודלים לא לינאריים בחקר ביצועים 5.3 עבר
097447 מבוא לחישוביות וסיבוכיות 5.2 78
324978 תפישת הביטחון הלאומית בישראל 0.2 73
ממוצע סמסטר: 3.94 שיעור הצלחות סמסטר: 74.0 נקודות סמסטר: 5.21
סמסטר חורף 21/2020) תשפ"א)
מס' מקצוע שם מקצוע נקודות ציון
096210 יסודות בינה מלאכותית ויישומיה 5.3 84
096250 מערכות מידע מבוזרות 5.3 73
096262 אחזור מידע 5.3 60
096275 הגורם האנושי באיסוף נתונים 5.3 62
096411 למידה חישובית 1 5.3 87
134058 ביולוגיה 1 0.3 80
324253 סוגיות אתיות וחברתיות במדע נתונים 0.2 90
ממוצע סמסטר: 3.96 שיעור הצלחות סמסטר: 00.1 נקודות סמסטר: 5.22
אנונימי אנונימי ת.ז. 123456789 נכון לתאריך: 2022-09-28
פקולטה: הנדסת תעשיה וניהול לתואר: מוסמך למדעים בהנדסת נתונים ומידע
ממוצע מצטבר: 0.92 שיעור הצלחות מצטבר: 96.0 נקודות מצטברות: 5.158
סוף גיליון ציונים
חיפה, 2022/09/28 אפרת נתיב רונן
מזכירה אקדמית, לימודי הסמכה
אנונימי אנונימי ת.ז. 123456789 נכון לתאריך: 2022-09-28
פקולטה: הנדסת תעשיה וניהול לתואר: מוסמך למדעים בהנדסת נתונים ומידע
ממוצע מצטבר: 0.86 שיעור הצלחות מצטבר: 96.0 נקודות מצטברות: 5.108
(org.tcpdf.www (TCPDF by Powered
4 changes: 2 additions & 2 deletions packages/server/src/core/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ pub fn parse_copy_paste_data(data: &str) -> Result<Vec<CourseStatus>, AppError>
let mut vec_courses = courses.into_values().collect::<Vec<_>>();

// Fix the grades for said courses
set_grades_for_uncompleted_courses(&mut vec_courses, asterisk_courses.clone());
set_grades_for_uncompleted_courses(&mut vec_courses, asterisk_courses);

vec_courses.append(&mut sport_courses);

Expand Down Expand Up @@ -166,7 +166,7 @@ fn parse_course_status_pdf_format(line: &str) -> Result<(Course, Option<Grade>),
let name = clean_line.split_whitespace().collect::<Vec<&str>>()[1..index].join(" ");

let grade_str = clean_line
.split(' ')
.split_whitespace()
.last()
.ok_or_else(|| AppError::Parser("Bad Format".into()))?
.trim();
Expand Down
27 changes: 20 additions & 7 deletions packages/server/src/core/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,22 +39,35 @@ async fn test_pdf_parser() {
}

#[test]
async fn test_asterisk_course_edge_case() {
async fn test_asterisk_course_input_from_edge_browser() {
let from_pdf = std::fs::read_to_string("../docs/pdf_ctrl_c_ctrl_v_5.txt")
.expect("Something went wrong reading the file");
let courses_display_from_pdf =
parser::parse_copy_paste_data(&from_pdf).expect("failed to parse pdf data");

let course_status = courses_display_from_pdf
.iter()
.find(|c| c.course.id == "094412")
.unwrap();

assert_eq!(course_status.grade.as_ref().unwrap(), &Grade::Numeric(92));
assert_eq!(course_status.semester.as_ref().unwrap(), "חורף_3");
}

#[test]
async fn test_asterisk_course_input_from_chrome_browser() {
let from_pdf = std::fs::read_to_string("../docs/pdf_ctrl_c_ctrl_v_3.txt")
.expect("Something went wrong reading the file");
let courses_display_from_pdf =
parser::parse_copy_paste_data(&from_pdf).expect("failed to parse pdf data");

let edge_case_course = courses_display_from_pdf
let course_status = courses_display_from_pdf
.iter()
.find(|c| c.course.id == "234129")
.unwrap();

assert_eq!(
edge_case_course.grade.as_ref().unwrap(),
&Grade::Numeric(67)
);
assert_eq!(edge_case_course.semester.as_ref().unwrap(), "חורף_1");
assert_eq!(course_status.grade.as_ref().unwrap(), &Grade::Numeric(67));
assert_eq!(course_status.semester.as_ref().unwrap(), "חורף_1");
}

lazy_static! {
Expand Down