mc_exam_randomizer/shuffler/
setting.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, PartialEq, Serialize, Deserialize, Clone)]
4pub struct ExamSetting {
5 pub university: String,
6 pub department: String,
7 pub term: String,
8 pub coursecode: String,
9 pub examname: String,
10 pub examdate: String,
11 pub timeallowed: String,
12 pub numberofvestions: u32,
13 pub groups: String,
14 pub code_name: Option<String>,
15 pub code_numbering: Option<String>,
16 pub examtype: Option<String>,
17}
18
19impl ExamSetting {
20 pub fn new() -> Self {
21 ExamSetting {
22 university: String::new(),
23 department: String::new(),
24 term: String::new(),
25 coursecode: String::new(),
26 examname: String::new(),
27 examdate: String::new(),
28 timeallowed: String::new(),
29 numberofvestions: 0,
30 groups: String::new(),
31 code_name: None,
32 code_numbering: None,
33 examtype: None,
34 }
35 }
36 pub fn append_from_key_value(
37 exam_setting: ExamSetting,
38 key: &str,
39 value: String,
40 ) -> ExamSetting {
41 if key == "university" {
42 ExamSetting {
43 university: value,
44 ..exam_setting
45 }
46 } else if key == "department" {
47 ExamSetting {
48 department: value,
49 ..exam_setting
50 }
51 } else if key == "term" {
52 ExamSetting {
53 term: value,
54 ..exam_setting
55 }
56 } else if key == "coursecode" {
57 ExamSetting {
58 coursecode: value,
59 ..exam_setting
60 }
61 } else if key == "examname" {
62 ExamSetting {
63 examname: value,
64 ..exam_setting
65 }
66 } else if key == "examdate" {
67 ExamSetting {
68 examdate: value,
69 ..exam_setting
70 }
71 } else if key == "timeallowed" {
72 ExamSetting {
73 timeallowed: value,
74 ..exam_setting
75 }
76 } else if key == "numberofvestions" {
77 ExamSetting {
78 numberofvestions: value.parse::<u32>().unwrap_or_default(),
79 ..exam_setting
80 }
81 } else if key == "groups" {
82 ExamSetting {
83 groups: value,
84 ..exam_setting
85 }
86 } else if key == "code_name" {
87 ExamSetting {
88 code_name: Some(value),
89 ..exam_setting
90 }
91 } else if key == "code_numbering" {
92 ExamSetting {
93 code_numbering: Some(value),
94 ..exam_setting
95 }
96 } else if key == "examtype" {
97 ExamSetting {
98 examtype: Some(value),
99 ..exam_setting
100 }
101 } else {
102 exam_setting
103 }
104 }
105}