studium 0.10.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of studium might be problematic. Click here for more details.

Files changed (882) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1982 -0
  3. data/bin/ask_exam_question +7 -0
  4. data/bin/check_description_of_these_lectures +7 -0
  5. data/bin/curriculum_module_displayer +7 -0
  6. data/bin/d10 +7 -0
  7. data/bin/d100 +7 -0
  8. data/bin/d15 +7 -0
  9. data/bin/d20 +7 -0
  10. data/bin/d25 +7 -0
  11. data/bin/d3 +7 -0
  12. data/bin/d30 +7 -0
  13. data/bin/d5 +7 -0
  14. data/bin/determine_curricula +7 -0
  15. data/bin/exam_registration_at +7 -0
  16. data/bin/exam_statistics +7 -0
  17. data/bin/exams_per_month +9 -0
  18. data/bin/finished_exams_at_this_university +7 -0
  19. data/bin/flashcards +7 -0
  20. data/bin/mandatory_continuous_assessment +7 -0
  21. data/bin/mandatory_upcoming_courses +7 -0
  22. data/bin/n_exam_questions_already_answered +16 -0
  23. data/bin/nquestions +7 -0
  24. data/bin/nsolved +7 -0
  25. data/bin/open_last_exam_question_asked_file +7 -0
  26. data/bin/passed_pr/303/274fungsimmanente_courses +7 -0
  27. data/bin/return_n_ects_from_this_file +7 -0
  28. data/bin/show_lectures_on_the_commandline +7 -0
  29. data/bin/show_themes +7 -0
  30. data/bin/solved +9 -0
  31. data/bin/solved_ects +7 -0
  32. data/bin/studienkennzahl +7 -0
  33. data/bin/studium +7 -0
  34. data/bin/studium_skeleton +7 -0
  35. data/bin/ufind +7 -0
  36. data/bin/upcoming_exams +7 -0
  37. data/bin/week_parser +7 -0
  38. data/doc/ECTS_CONSIDERATIONS.md +81 -0
  39. data/doc/HOW_TO_ADAPT_THIS_PROJECT.md +43 -0
  40. data/doc/HOW_TO_DETERMINE_WHICH_PART_IS_THE_QUESTION_AND_WHICH_PART_IS_THE_ANSWER.md +47 -0
  41. data/doc/README.gen +1965 -0
  42. data/doc/TODO_FOR_STUDIUM_GEM.md +113 -0
  43. data/doc/deprecated_components.md +24 -0
  44. data/doc/documentation_for_the_file_lecture_information.md +294 -0
  45. data/doc/elegant_colours.md +20 -0
  46. data/img/STUDIES.png +0 -0
  47. data/lib/studium.rb +5 -0
  48. data/lib/studium/autoinclude.rb +7 -0
  49. data/lib/studium/base/base.rb +84 -0
  50. data/lib/studium/base/cliner.rb +58 -0
  51. data/lib/studium/base/colours.rb +307 -0
  52. data/lib/studium/base/commandline_arguments.rb +64 -0
  53. data/lib/studium/base/constants.rb +34 -0
  54. data/lib/studium/base/curriculum.rb +329 -0
  55. data/lib/studium/base/directory_to_the_exam_topics.rb +23 -0
  56. data/lib/studium/base/editor.rb +28 -0
  57. data/lib/studium/base/encoding.rb +36 -0
  58. data/lib/studium/base/esystem.rb +23 -0
  59. data/lib/studium/base/minimal_prototype.rb +66 -0
  60. data/lib/studium/base/misc.rb +854 -0
  61. data/lib/studium/base/mode.rb +92 -0
  62. data/lib/studium/base/obtain.rb +145 -0
  63. data/lib/studium/base/opnn.rb +46 -0
  64. data/lib/studium/base/prototype.rb +92 -0
  65. data/lib/studium/base/readlines.rb +55 -0
  66. data/lib/studium/base/replace.rb +110 -0
  67. data/lib/studium/base/reset.rb +77 -0
  68. data/lib/studium/base/run.rb +17 -0
  69. data/lib/studium/base/src_dir_at_home.rb +20 -0
  70. data/lib/studium/base/time.rb +634 -0
  71. data/lib/studium/base/unicode.rb +95 -0
  72. data/lib/studium/base/word_wrap.rb +58 -0
  73. data/lib/studium/boku/README.md +4 -0
  74. data/lib/studium/boku/boku_biotechnology_all_master_lectures.rb +142 -0
  75. data/lib/studium/boku/boku_/303/266ffnungszeiten.rb +29 -0
  76. data/lib/studium/boku/show_three_pillars_of_these_lectures.rb +96 -0
  77. data/lib/studium/boku/three_pillars.rb +232 -0
  78. data/lib/studium/check_and_sanitize/README.md +11 -0
  79. data/lib/studium/check_and_sanitize/check_curriculum_for_correct_separation_of_bachelor_and_master.rb +149 -0
  80. data/lib/studium/check_and_sanitize/check_for_all_exam_topics_being_registered.rb +107 -0
  81. data/lib/studium/check_and_sanitize/check_for_existing_description_of_this_lecture.rb +197 -0
  82. data/lib/studium/check_and_sanitize/check_the_lecture_information_file.rb +171 -0
  83. data/lib/studium/check_and_sanitize/missing_priority_entry.rb +44 -0
  84. data/lib/studium/check_and_sanitize/sanitize_this_string_containing_the_lva_dates.rb +79 -0
  85. data/lib/studium/colours/colours.rb +570 -0
  86. data/lib/studium/colours/sfancy.rb +40 -0
  87. data/lib/studium/colours/sfile.rb +35 -0
  88. data/lib/studium/colours/simp.rb +38 -0
  89. data/lib/studium/colours/use_this_colour_for_exam_questions_and_exam_answers.rb +76 -0
  90. data/lib/studium/commandline/commandline.rb +25 -0
  91. data/lib/studium/commandline/constants.rb +16 -0
  92. data/lib/studium/commandline/help.rb +152 -0
  93. data/lib/studium/commandline/initialize.rb +27 -0
  94. data/lib/studium/commandline/menu.rb +760 -0
  95. data/lib/studium/commandline/misc.rb +707 -0
  96. data/lib/studium/commandline/reset.rb +24 -0
  97. data/lib/studium/commandline/run.rb +20 -0
  98. data/lib/studium/constants/boku_wien.rb +52 -0
  99. data/lib/studium/constants/constants.rb +25 -0
  100. data/lib/studium/constants/delay.rb +28 -0
  101. data/lib/studium/constants/editor.rb +28 -0
  102. data/lib/studium/constants/exam_topics.rb +183 -0
  103. data/lib/studium/constants/file_constants.rb +875 -0
  104. data/lib/studium/constants/image_constants.rb +216 -0
  105. data/lib/studium/constants/last_question_asked.rb +38 -0
  106. data/lib/studium/constants/lecture_types_that_are_mandatory_continuous_assessment.rb +47 -0
  107. data/lib/studium/constants/misc.rb +163 -0
  108. data/lib/studium/constants/namespace.rb +14 -0
  109. data/lib/studium/constants/newline.rb +14 -0
  110. data/lib/studium/constants/regexes.rb +35 -0
  111. data/lib/studium/constants/return_file_for_this_curriculum.rb +411 -0
  112. data/lib/studium/constants/roebe.rb +173 -0
  113. data/lib/studium/constants/time.rb +52 -0
  114. data/lib/studium/constants/tu_wien.rb +39 -0
  115. data/lib/studium/constants/uni_wien.rb +24 -0
  116. data/lib/studium/constants/unicode.rb +27 -0
  117. data/lib/studium/constants/week.rb +138 -0
  118. data/lib/studium/constants/www_constants.rb +23 -0
  119. data/lib/studium/curricula/curriculum.rb +199 -0
  120. data/lib/studium/curricula/curriculum_as_string.rb +279 -0
  121. data/lib/studium/curricula/curriculum_module_displayer/constants.rb +38 -0
  122. data/lib/studium/curricula/curriculum_module_displayer/curriculum_module_displayer.rb +417 -0
  123. data/lib/studium/curricula/curriculum_module_displayer/initialize.rb +25 -0
  124. data/lib/studium/curricula/curriculum_module_displayer/menu.rb +45 -0
  125. data/lib/studium/curricula/curriculum_module_displayer/reset.rb +77 -0
  126. data/lib/studium/curricula/curriculum_module_displayer/run.rb +20 -0
  127. data/lib/studium/curricula/curriculum_module_displayer/set_use_this_curriculum.rb +93 -0
  128. data/lib/studium/curricula/curriculum_module_displayer/show_and_report.rb +190 -0
  129. data/lib/studium/curricula/determine_curricula/constants.rb +16 -0
  130. data/lib/studium/curricula/determine_curricula/determine_curricula.rb +36 -0
  131. data/lib/studium/curricula/determine_curricula/help.rb +39 -0
  132. data/lib/studium/curricula/determine_curricula/initialize.rb +48 -0
  133. data/lib/studium/curricula/determine_curricula/menu.rb +138 -0
  134. data/lib/studium/curricula/determine_curricula/misc.rb +402 -0
  135. data/lib/studium/curricula/determine_curricula/report.rb +131 -0
  136. data/lib/studium/curricula/determine_curricula/reset.rb +62 -0
  137. data/lib/studium/curricula/determine_curricula/run.rb +19 -0
  138. data/lib/studium/curricula/determine_elective_courses_in_this_curriculum.rb +112 -0
  139. data/lib/studium/curricula/display_bachelor_curricula.rb +89 -0
  140. data/lib/studium/curricula/mitteilungsbl/303/244tter.rb +336 -0
  141. data/lib/studium/curricula/modules/display_on_the_commandline.rb +316 -0
  142. data/lib/studium/curricula/modules/return_n_ects_in_this_module.rb +74 -0
  143. data/lib/studium/curricula/n_percent_solved_in_this_curriculum.rb +75 -0
  144. data/lib/studium/curricula/random_curriculum_creator.rb +171 -0
  145. data/lib/studium/curricula/show_lectures_of_this_curriculum.rb +114 -0
  146. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/constants.rb +16 -0
  147. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/initialize.rb +27 -0
  148. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/menu.rb +35 -0
  149. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/misc.rb +242 -0
  150. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/report.rb +140 -0
  151. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/reset.rb +67 -0
  152. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/show_lectures_of_this_curriculum_id.rb +37 -0
  153. data/lib/studium/curricula/show_solved_percentage_among_the_registered_curricula.rb +87 -0
  154. data/lib/studium/ects/boku_ects_splitter.rb +127 -0
  155. data/lib/studium/ects/ects_parser.rb +179 -0
  156. data/lib/studium/ects/ects_per_university.rb +140 -0
  157. data/lib/studium/ects/ects_scanner.rb +141 -0
  158. data/lib/studium/ects/ects_to_university_parser.rb +148 -0
  159. data/lib/studium/ects/erledigt.rb +131 -0
  160. data/lib/studium/ects/last_entry_is_curriculum.rb +147 -0
  161. data/lib/studium/ects/n_ects_in_these_lectures.rb +185 -0
  162. data/lib/studium/ects/n_ects_points_in_mandatory_presence_courses.rb +50 -0
  163. data/lib/studium/ects/noch_zu_absolvieren.rb +172 -0
  164. data/lib/studium/ects/return_n_ects_from_this_file.rb +58 -0
  165. data/lib/studium/ects/return_n_ects_from_this_url.rb +202 -0
  166. data/lib/studium/ects/search_for_n_ects.rb +540 -0
  167. data/lib/studium/ects/show_completed_ects_in_all_curricula.rb +210 -0
  168. data/lib/studium/ects/show_passed_credits_per_curriculum.rb +254 -0
  169. data/lib/studium/ects/simple_total_ects_points.rb +143 -0
  170. data/lib/studium/ects/solved_ects/constants.rb +24 -0
  171. data/lib/studium/ects/solved_ects/reset.rb +54 -0
  172. data/lib/studium/ects/solved_ects/solved_ects.rb +325 -0
  173. data/lib/studium/ects/solved_ects_per_university/reset.rb +25 -0
  174. data/lib/studium/ects/solved_ects_per_university/solved_ects_per_university.rb +106 -0
  175. data/lib/studium/ects/still_missing.rb +133 -0
  176. data/lib/studium/ects/sum_of_ects.rb +150 -0
  177. data/lib/studium/encoding/encoding.rb +150 -0
  178. data/lib/studium/exam_topics/RNAi_siRNA_and_miRNA +79 -0
  179. data/lib/studium/exam_topics/abfall_als_ressource +86 -0
  180. data/lib/studium/exam_topics/advanced_biochemistry +762 -0
  181. data/lib/studium/exam_topics/advanced_biotechnology +192 -0
  182. data/lib/studium/exam_topics/advanced_cellbiology +25 -0
  183. data/lib/studium/exam_topics/advanced_chemistry +453 -0
  184. data/lib/studium/exam_topics/advanced_microbiology +44 -0
  185. data/lib/studium/exam_topics/advanced_topics_in_plant_sciences +51 -0
  186. data/lib/studium/exam_topics/advanced_virology +52 -0
  187. data/lib/studium/exam_topics/ageing +101 -0
  188. data/lib/studium/exam_topics/agrar_ecology +61 -0
  189. data/lib/studium/exam_topics/agrarmarkt +70 -0
  190. data/lib/studium/exam_topics/agrarphysik +35 -0
  191. data/lib/studium/exam_topics/alcohols +29 -0
  192. data/lib/studium/exam_topics/algorithms +49 -0
  193. data/lib/studium/exam_topics/allergie +73 -0
  194. data/lib/studium/exam_topics/allgemeine_genetik +1006 -0
  195. data/lib/studium/exam_topics/allgemeine_mikrobiologie +855 -0
  196. data/lib/studium/exam_topics/aminoacids +417 -0
  197. data/lib/studium/exam_topics/analytische_chemie_1 +131 -0
  198. data/lib/studium/exam_topics/analytische_chemie_2 +31 -0
  199. data/lib/studium/exam_topics/anatomie +248 -0
  200. data/lib/studium/exam_topics/anorganische_chemie +289 -0
  201. data/lib/studium/exam_topics/anthropologie +115 -0
  202. data/lib/studium/exam_topics/antibodies_and_antigens +747 -0
  203. data/lib/studium/exam_topics/apoptosis +35 -0
  204. data/lib/studium/exam_topics/archaea +41 -0
  205. data/lib/studium/exam_topics/architecture +8 -0
  206. data/lib/studium/exam_topics/artificial_intelligence +81 -0
  207. data/lib/studium/exam_topics/audio +10 -0
  208. data/lib/studium/exam_topics/bacteriophages +224 -0
  209. data/lib/studium/exam_topics/basic_biochemistry +1008 -0
  210. data/lib/studium/exam_topics/basic_biotechnology +1011 -0
  211. data/lib/studium/exam_topics/basic_chemistry +1007 -0
  212. data/lib/studium/exam_topics/basic_virology +955 -0
  213. data/lib/studium/exam_topics/bauwesen +6 -0
  214. data/lib/studium/exam_topics/betriebssysteme +125 -0
  215. data/lib/studium/exam_topics/betriebswirtschaftslehre +29 -0
  216. data/lib/studium/exam_topics/bioanalytik_und_biosensoren +381 -0
  217. data/lib/studium/exam_topics/biochips +78 -0
  218. data/lib/studium/exam_topics/bioelektrochemie +56 -0
  219. data/lib/studium/exam_topics/biofilms +22 -0
  220. data/lib/studium/exam_topics/bioinformatics +475 -0
  221. data/lib/studium/exam_topics/biological_therapeutics +152 -0
  222. data/lib/studium/exam_topics/biologie +134 -0
  223. data/lib/studium/exam_topics/biomarkers +106 -0
  224. data/lib/studium/exam_topics/biomaterials +46 -0
  225. data/lib/studium/exam_topics/biomembranes +6 -0
  226. data/lib/studium/exam_topics/bionik +65 -0
  227. data/lib/studium/exam_topics/biophysik +34 -0
  228. data/lib/studium/exam_topics/biopolymers +10 -0
  229. data/lib/studium/exam_topics/bioprozesstechnik +139 -0
  230. data/lib/studium/exam_topics/bioressourcenmanagement +78 -0
  231. data/lib/studium/exam_topics/bodenkunde +345 -0
  232. data/lib/studium/exam_topics/bodenmikrobiologie +40 -0
  233. data/lib/studium/exam_topics/cancerbiology +441 -0
  234. data/lib/studium/exam_topics/cell_cultures +154 -0
  235. data/lib/studium/exam_topics/cellbiology +962 -0
  236. data/lib/studium/exam_topics/cellular_transport_and_protein_secretion +27 -0
  237. data/lib/studium/exam_topics/chemische_technologie_anorganischer_stoffe +208 -0
  238. data/lib/studium/exam_topics/chemisches_labor +59 -0
  239. data/lib/studium/exam_topics/chemotaxis_and_motility_in_prokaryotes +74 -0
  240. data/lib/studium/exam_topics/citric_acid_cycle +70 -0
  241. data/lib/studium/exam_topics/clinical_microbiology +486 -0
  242. data/lib/studium/exam_topics/computer_graphics +5 -0
  243. data/lib/studium/exam_topics/computer_science +269 -0
  244. data/lib/studium/exam_topics/crispr +25 -0
  245. data/lib/studium/exam_topics/cyanobacteria +37 -0
  246. data/lib/studium/exam_topics/cytogenetics_and_chromosome_biology +506 -0
  247. data/lib/studium/exam_topics/databases_and_sql +105 -0
  248. data/lib/studium/exam_topics/dna_mutation_and_dna_repair +33 -0
  249. data/lib/studium/exam_topics/dna_replication +53 -0
  250. data/lib/studium/exam_topics/ecogenetics +27 -0
  251. data/lib/studium/exam_topics/ecological_agriculture +12 -0
  252. data/lib/studium/exam_topics/ecology +313 -0
  253. data/lib/studium/exam_topics/economy +210 -0
  254. data/lib/studium/exam_topics/elektronenmikroskopie +353 -0
  255. data/lib/studium/exam_topics/elektrophorese +88 -0
  256. data/lib/studium/exam_topics/elektrotechnik +8 -0
  257. data/lib/studium/exam_topics/elisa +54 -0
  258. data/lib/studium/exam_topics/embryologie_und_entwicklung +541 -0
  259. data/lib/studium/exam_topics/endospores_and_spores +92 -0
  260. data/lib/studium/exam_topics/enzymes_and_cofactors +327 -0
  261. data/lib/studium/exam_topics/epigenetik +177 -0
  262. data/lib/studium/exam_topics/ethik +125 -0
  263. data/lib/studium/exam_topics/evolution_and_evolutionary_genetics +323 -0
  264. data/lib/studium/exam_topics/excel +7 -0
  265. data/lib/studium/exam_topics/fish +19 -0
  266. data/lib/studium/exam_topics/fluorescence_microscopy +7 -0
  267. data/lib/studium/exam_topics/food_microbiology_and_food_biotechnology +17 -0
  268. data/lib/studium/exam_topics/forensik +11 -0
  269. data/lib/studium/exam_topics/forstwirtschaft +52 -0
  270. data/lib/studium/exam_topics/fortgeschrittene_genetik +429 -0
  271. data/lib/studium/exam_topics/fortgeschrittene_gentechnik +189 -0
  272. data/lib/studium/exam_topics/fortgeschrittene_physik +6 -0
  273. data/lib/studium/exam_topics/fungi +78 -0
  274. data/lib/studium/exam_topics/genetische_krankheiten +150 -0
  275. data/lib/studium/exam_topics/genexpression +1008 -0
  276. data/lib/studium/exam_topics/genomics_and_metagenomics +205 -0
  277. data/lib/studium/exam_topics/gentechnik_und_praktische_biochemie +863 -0
  278. data/lib/studium/exam_topics/geochemistry +66 -0
  279. data/lib/studium/exam_topics/geography +5 -0
  280. data/lib/studium/exam_topics/geologie_und_mineralogie +610 -0
  281. data/lib/studium/exam_topics/geschichte +94 -0
  282. data/lib/studium/exam_topics/gluconeogenesis +34 -0
  283. data/lib/studium/exam_topics/glycolysis +95 -0
  284. data/lib/studium/exam_topics/glykomik +42 -0
  285. data/lib/studium/exam_topics/glyoxylatzyklus +23 -0
  286. data/lib/studium/exam_topics/grassland_cultivation +32 -0
  287. data/lib/studium/exam_topics/hormone +122 -0
  288. data/lib/studium/exam_topics/html +7 -0
  289. data/lib/studium/exam_topics/human_ecology +8 -0
  290. data/lib/studium/exam_topics/hygiene +191 -0
  291. data/lib/studium/exam_topics/imaging_and_microscopy +224 -0
  292. data/lib/studium/exam_topics/immunanalytik +88 -0
  293. data/lib/studium/exam_topics/immunologie +888 -0
  294. data/lib/studium/exam_topics/informatik +95 -0
  295. data/lib/studium/exam_topics/innate_immunity +20 -0
  296. data/lib/studium/exam_topics/insekten +30 -0
  297. data/lib/studium/exam_topics/insulin_and_diabetes +55 -0
  298. data/lib/studium/exam_topics/java +440 -0
  299. data/lib/studium/exam_topics/javascript +10 -0
  300. data/lib/studium/exam_topics/klima +6 -0
  301. data/lib/studium/exam_topics/landtechnik +27 -0
  302. data/lib/studium/exam_topics/lebensmittel +206 -0
  303. data/lib/studium/exam_topics/lebensmitteltechnologie +16 -0
  304. data/lib/studium/exam_topics/linux +5 -0
  305. data/lib/studium/exam_topics/lipids +95 -0
  306. data/lib/studium/exam_topics/macroeconomics +39 -0
  307. data/lib/studium/exam_topics/mathematics +175 -0
  308. data/lib/studium/exam_topics/medizin_und_biomedizinische_technik +250 -0
  309. data/lib/studium/exam_topics/medizinische_chemie_und_pharmazie +397 -0
  310. data/lib/studium/exam_topics/messtechnik_und_regeltechnik +104 -0
  311. data/lib/studium/exam_topics/metabolismus +433 -0
  312. data/lib/studium/exam_topics/microbial_ecology +35 -0
  313. data/lib/studium/exam_topics/mikrobielle_lebensgemeinschaften +34 -0
  314. data/lib/studium/exam_topics/mikrobielle_physiologie +153 -0
  315. data/lib/studium/exam_topics/mixed +289 -0
  316. data/lib/studium/exam_topics/molecular_biology_of_plants +235 -0
  317. data/lib/studium/exam_topics/molekulare_medizin +129 -0
  318. data/lib/studium/exam_topics/nanotechnologie +303 -0
  319. data/lib/studium/exam_topics/nature_conservation_and_biodiversity +165 -0
  320. data/lib/studium/exam_topics/naturstoffe +9 -0
  321. data/lib/studium/exam_topics/netzwerke +32 -0
  322. data/lib/studium/exam_topics/neurobiology +266 -0
  323. data/lib/studium/exam_topics/nucleotide_sequencing +30 -0
  324. data/lib/studium/exam_topics/object_oriented_modeling +14 -0
  325. data/lib/studium/exam_topics/obstbau +234 -0
  326. data/lib/studium/exam_topics/organische_chemie +1007 -0
  327. data/lib/studium/exam_topics/organische_chemie_2 +72 -0
  328. data/lib/studium/exam_topics/paleobiology +33 -0
  329. data/lib/studium/exam_topics/parasitic_diseases_and_molecular_infection_biology +335 -0
  330. data/lib/studium/exam_topics/patent_law +55 -0
  331. data/lib/studium/exam_topics/pathologie +713 -0
  332. data/lib/studium/exam_topics/pcr +133 -0
  333. data/lib/studium/exam_topics/peroxisomes_glycosomes_and_lysosomes +54 -0
  334. data/lib/studium/exam_topics/pflanzenanatomie +240 -0
  335. data/lib/studium/exam_topics/pflanzenbau +24 -0
  336. data/lib/studium/exam_topics/pflanzenschutz +35 -0
  337. data/lib/studium/exam_topics/pflanzenwissenschaften +1009 -0
  338. data/lib/studium/exam_topics/pharmaceutical_biotechnology +250 -0
  339. data/lib/studium/exam_topics/physik +338 -0
  340. data/lib/studium/exam_topics/physikalische_chemie +85 -0
  341. data/lib/studium/exam_topics/physiology_and_histology +485 -0
  342. data/lib/studium/exam_topics/phytochemie +33 -0
  343. data/lib/studium/exam_topics/plant_biotechnology +127 -0
  344. data/lib/studium/exam_topics/plant_breeding +64 -0
  345. data/lib/studium/exam_topics/plant_development +50 -0
  346. data/lib/studium/exam_topics/populationsgenetik +136 -0
  347. data/lib/studium/exam_topics/posttranslationale_modifikation_von_proteinen +186 -0
  348. data/lib/studium/exam_topics/projektmanagement +218 -0
  349. data/lib/studium/exam_topics/prokaryote_genetics +470 -0
  350. data/lib/studium/exam_topics/proteomik +38 -0
  351. data/lib/studium/exam_topics/prozesstechnik +95 -0
  352. data/lib/studium/exam_topics/psychologie +9 -0
  353. data/lib/studium/exam_topics/python +350 -0
  354. data/lib/studium/exam_topics/quality_management +241 -0
  355. data/lib/studium/exam_topics/rechtsgrundlagen +115 -0
  356. data/lib/studium/exam_topics/research_topics_in_immunobiology +42 -0
  357. data/lib/studium/exam_topics/rna_and_dna +362 -0
  358. data/lib/studium/exam_topics/rna_seq +11 -0
  359. data/lib/studium/exam_topics/ruby +131 -0
  360. data/lib/studium/exam_topics/ruby_on_rails +62 -0
  361. data/lib/studium/exam_topics/scientific_writing_and_publishing +38 -0
  362. data/lib/studium/exam_topics/semisynthese_von_proteinen_und_nukleotiden +120 -0
  363. data/lib/studium/exam_topics/sexualbiologie +59 -0
  364. data/lib/studium/exam_topics/signal_transduction_and_laser_systems +136 -0
  365. data/lib/studium/exam_topics/splicing_exons_and_introns +57 -0
  366. data/lib/studium/exam_topics/statistik +202 -0
  367. data/lib/studium/exam_topics/stemcells +87 -0
  368. data/lib/studium/exam_topics/structural_bioinformatics +54 -0
  369. data/lib/studium/exam_topics/strukturbiologie +319 -0
  370. data/lib/studium/exam_topics/system_biology_and_synthetic_biology +87 -0
  371. data/lib/studium/exam_topics/systematische_zoologie +430 -0
  372. data/lib/studium/exam_topics/technical_ecology +144 -0
  373. data/lib/studium/exam_topics/technische_chemie +194 -0
  374. data/lib/studium/exam_topics/technische_grundlagen_der_informatik +22 -0
  375. data/lib/studium/exam_topics/technische_mikrobiologie +403 -0
  376. data/lib/studium/exam_topics/technisches_zeichnen +5 -0
  377. data/lib/studium/exam_topics/the_bacterial_cell_wall +86 -0
  378. data/lib/studium/exam_topics/the_c_plus_plus_programming_language +488 -0
  379. data/lib/studium/exam_topics/the_c_programming_language +128 -0
  380. data/lib/studium/exam_topics/the_cellcycle +65 -0
  381. data/lib/studium/exam_topics/the_european_union +119 -0
  382. data/lib/studium/exam_topics/the_interferon_system +32 -0
  383. data/lib/studium/exam_topics/the_microbiome +163 -0
  384. data/lib/studium/exam_topics/the_universe +6 -0
  385. data/lib/studium/exam_topics/theoretische_chemie +5 -0
  386. data/lib/studium/exam_topics/theoretische_informatik +157 -0
  387. data/lib/studium/exam_topics/tierzucht +94 -0
  388. data/lib/studium/exam_topics/toxikologie +403 -0
  389. data/lib/studium/exam_topics/transcription +26 -0
  390. data/lib/studium/exam_topics/translation_ribosomes_and_translational_control +138 -0
  391. data/lib/studium/exam_topics/umweltbiotechnologie +58 -0
  392. data/lib/studium/exam_topics/umweltchemie +233 -0
  393. data/lib/studium/exam_topics/urbanism_and_traffic +19 -0
  394. data/lib/studium/exam_topics/vaccines_and_vaccination +234 -0
  395. data/lib/studium/exam_topics/vectors_and_gene_therapy +237 -0
  396. data/lib/studium/exam_topics/verfahrenstechnik +32 -0
  397. data/lib/studium/exam_topics/veterinary_medicine +10 -0
  398. data/lib/studium/exam_topics/vitamine +19 -0
  399. data/lib/studium/exam_topics/wasserkunde +141 -0
  400. data/lib/studium/exam_topics/weinbau +59 -0
  401. data/lib/studium/exam_topics/wissenschaft +17 -0
  402. data/lib/studium/exam_topics/yeast +97 -0
  403. data/lib/studium/exam_topics/zoologie +329 -0
  404. data/lib/studium/exams/afterburn.rb +264 -0
  405. data/lib/studium/exams/ask_exam_from_the_upcoming_exams_pool.rb +158 -0
  406. data/lib/studium/exams/ask_exam_question/answer.rb +106 -0
  407. data/lib/studium/exams/ask_exam_question/ask_exam_question.rb +135 -0
  408. data/lib/studium/exams/ask_exam_question/constants.rb +74 -0
  409. data/lib/studium/exams/ask_exam_question/delay.rb +101 -0
  410. data/lib/studium/exams/ask_exam_question/help.rb +72 -0
  411. data/lib/studium/exams/ask_exam_question/initialize.rb +70 -0
  412. data/lib/studium/exams/ask_exam_question/menu.rb +382 -0
  413. data/lib/studium/exams/ask_exam_question/misc.rb +938 -0
  414. data/lib/studium/exams/ask_exam_question/question.rb +77 -0
  415. data/lib/studium/exams/ask_exam_question/reset.rb +103 -0
  416. data/lib/studium/exams/ask_exam_question/run.rb +49 -0
  417. data/lib/studium/exams/ask_exam_topic_question.rb +120 -0
  418. data/lib/studium/exams/ask_question_from_alias.rb +151 -0
  419. data/lib/studium/exams/ask_question_from_any_of_the_still_missing_lectures.rb +133 -0
  420. data/lib/studium/exams/ask_question_from_grouped_themes.rb +141 -0
  421. data/lib/studium/exams/ask_question_from_last_topic.rb +93 -0
  422. data/lib/studium/exams/ask_random_question.rb +190 -0
  423. data/lib/studium/exams/autoinclude.rb +7 -0
  424. data/lib/studium/exams/class.rb +127 -0
  425. data/lib/studium/exams/csv/create_csv_passed_exams_file.rb +225 -0
  426. data/lib/studium/exams/cycle.rb +283 -0
  427. data/lib/studium/exams/dataset.rb +90 -0
  428. data/lib/studium/exams/exam_registration_at/constants.rb +49 -0
  429. data/lib/studium/exams/exam_registration_at/exam_registration_at.rb +254 -0
  430. data/lib/studium/exams/exam_registration_at/help.rb +46 -0
  431. data/lib/studium/exams/exam_registration_at/menu.rb +81 -0
  432. data/lib/studium/exams/exam_registration_at/report.rb +108 -0
  433. data/lib/studium/exams/exam_registration_at/reset.rb +49 -0
  434. data/lib/studium/exams/exam_statistics_from_this_file/exam_statistics_from_this_file.rb +127 -0
  435. data/lib/studium/exams/exam_topics.rb +202 -0
  436. data/lib/studium/exams/exams.rb +18 -0
  437. data/lib/studium/exams/exams_per_month/colours.rb +81 -0
  438. data/lib/studium/exams/exams_per_month/constants.rb +69 -0
  439. data/lib/studium/exams/exams_per_month/dataset.rb +64 -0
  440. data/lib/studium/exams/exams_per_month/exams_per_month.rb +291 -0
  441. data/lib/studium/exams/exams_per_month/help.rb +72 -0
  442. data/lib/studium/exams/exams_per_month/initialize.rb +39 -0
  443. data/lib/studium/exams/exams_per_month/menu.rb +258 -0
  444. data/lib/studium/exams/exams_per_month/open.rb +139 -0
  445. data/lib/studium/exams/exams_per_month/requires.rb +8 -0
  446. data/lib/studium/exams/exams_per_month/reset.rb +115 -0
  447. data/lib/studium/exams/exams_per_month/run.rb +18 -0
  448. data/lib/studium/exams/exams_per_month/sanitize.rb +129 -0
  449. data/lib/studium/exams/exams_per_month/show_and_report.rb +1281 -0
  450. data/lib/studium/exams/exams_this_week.rb +179 -0
  451. data/lib/studium/exams/fix_exam_dates.rb +129 -0
  452. data/lib/studium/exams/last_exams/last_exams.rb +381 -0
  453. data/lib/studium/exams/lectures_without_exam_entry.rb +145 -0
  454. data/lib/studium/exams/mandatory_continuous_assessment/compare.rb +144 -0
  455. data/lib/studium/exams/mandatory_continuous_assessment/constants.rb +18 -0
  456. data/lib/studium/exams/mandatory_continuous_assessment/help.rb +92 -0
  457. data/lib/studium/exams/mandatory_continuous_assessment/initialize.rb +46 -0
  458. data/lib/studium/exams/mandatory_continuous_assessment/mandatory_continuous_assessment.rb +1115 -0
  459. data/lib/studium/exams/mandatory_continuous_assessment/menu.rb +114 -0
  460. data/lib/studium/exams/mandatory_continuous_assessment/misc.rb +61 -0
  461. data/lib/studium/exams/mandatory_continuous_assessment/reset.rb +85 -0
  462. data/lib/studium/exams/mandatory_continuous_assessment/run.rb +33 -0
  463. data/lib/studium/exams/mandatory_continuous_assessment/set_title_of_the_curriculum.rb +181 -0
  464. data/lib/studium/exams/mandatory_continuous_assessment/show_and_report.rb +147 -0
  465. data/lib/studium/exams/move_the_last_exam_question_to_the_top_of_the_file/move_the_last_exam_question_to_the_top_of_the_file.rb +119 -0
  466. data/lib/studium/exams/n_exams_in_these_topics.rb +408 -0
  467. data/lib/studium/exams/new_questions_per_year.rb +153 -0
  468. data/lib/studium/exams/next_exam.rb +111 -0
  469. data/lib/studium/exams/next_exams.rb +385 -0
  470. data/lib/studium/exams/open_exam_associated_url.rb +158 -0
  471. data/lib/studium/exams/open_last_exam_question_asked_file/constants.rb +20 -0
  472. data/lib/studium/exams/open_last_exam_question_asked_file/initialize.rb +29 -0
  473. data/lib/studium/exams/open_last_exam_question_asked_file/open_last_exam_question_asked_file.rb +112 -0
  474. data/lib/studium/exams/passed_exams/passed_exams.rb +46 -0
  475. data/lib/studium/exams/pruefung.rb +288 -0
  476. data/lib/studium/exams/push_solved_questions_on_top.rb +188 -0
  477. data/lib/studium/exams/question_answer/question_answer.rb +842 -0
  478. data/lib/studium/exams/questions_solved_from_day_to_day.rb +353 -0
  479. data/lib/studium/exams/repeat_last_question.rb +78 -0
  480. data/lib/studium/exams/show_all_passed_exams_of_this_university.rb +260 -0
  481. data/lib/studium/exams/show_backlog_of_exams.rb +125 -0
  482. data/lib/studium/exams/show_next_exams_for.rb +141 -0
  483. data/lib/studium/exams/show_themes/constants.rb +33 -0
  484. data/lib/studium/exams/show_themes/menu.rb +61 -0
  485. data/lib/studium/exams/show_themes/misc.rb +536 -0
  486. data/lib/studium/exams/show_themes/reset.rb +64 -0
  487. data/lib/studium/exams/show_themes/show_themes.rb +27 -0
  488. data/lib/studium/exams/show_upcoming_exams/consider_autogenerating_exam_aliases.rb +170 -0
  489. data/lib/studium/exams/show_upcoming_exams/constants.rb +82 -0
  490. data/lib/studium/exams/show_upcoming_exams/help.rb +33 -0
  491. data/lib/studium/exams/show_upcoming_exams/initialize.rb +71 -0
  492. data/lib/studium/exams/show_upcoming_exams/menu.rb +53 -0
  493. data/lib/studium/exams/show_upcoming_exams/report.rb +195 -0
  494. data/lib/studium/exams/show_upcoming_exams/reset.rb +38 -0
  495. data/lib/studium/exams/show_upcoming_exams/run.rb +20 -0
  496. data/lib/studium/exams/show_upcoming_exams/show_upcoming_exams.rb +494 -0
  497. data/lib/studium/exams/solve_all_questions_from_this_topic.rb +122 -0
  498. data/lib/studium/exams/solved/constants.rb +37 -0
  499. data/lib/studium/exams/solved/help.rb +23 -0
  500. data/lib/studium/exams/solved/menu.rb +35 -0
  501. data/lib/studium/exams/solved/reset.rb +30 -0
  502. data/lib/studium/exams/solved/solved.rb +306 -0
  503. data/lib/studium/exams/steop.rb +99 -0
  504. data/lib/studium/exams/unsolve_all_questions_from_this_topic.rb +170 -0
  505. data/lib/studium/exams/upcoming_exams/constants.rb +20 -0
  506. data/lib/studium/exams/upcoming_exams/help.rb +38 -0
  507. data/lib/studium/exams/upcoming_exams/initialize.rb +27 -0
  508. data/lib/studium/exams/upcoming_exams/menu.rb +79 -0
  509. data/lib/studium/exams/upcoming_exams/misc.rb +360 -0
  510. data/lib/studium/exams/upcoming_exams/reset.rb +37 -0
  511. data/lib/studium/exams/upcoming_exams/run.rb +25 -0
  512. data/lib/studium/exams/upcoming_exams/upcoming_exams.rb +32 -0
  513. data/lib/studium/exams/upcoming_exams_at_the_boku/constants.rb +23 -0
  514. data/lib/studium/exams/upcoming_exams_at_the_boku/html.rb +64 -0
  515. data/lib/studium/exams/upcoming_exams_at_the_boku/upcoming_exams_at_the_boku.rb +194 -0
  516. data/lib/studium/exams/upcoming_exams_dataset.rb +251 -0
  517. data/lib/studium/exams/upload_exam_topics.rb +357 -0
  518. data/lib/studium/flashcards/flashcards.rb +95 -0
  519. data/lib/studium/graphviz/README.md +4 -0
  520. data/lib/studium/graphviz/bachelor_vector_based_strategies.dot +160 -0
  521. data/lib/studium/graphviz/master_vector_based_strategies.dot +46 -0
  522. data/lib/studium/gui/gtk2/constants.rb +52 -0
  523. data/lib/studium/gui/gtk2/exam_card.rb +199 -0
  524. data/lib/studium/gui/gtk2/flip_card.rb +8 -0
  525. data/lib/studium/gui/gtk2/frame.rb +319 -0
  526. data/lib/studium/gui/gtk2/main_box.rb +188 -0
  527. data/lib/studium/gui/gtk2/misc.rb +99 -0
  528. data/lib/studium/gui/gtk2/module_methods.rb +58 -0
  529. data/lib/studium/gui/gtk2/require_gtk_files.rb +25 -0
  530. data/lib/studium/gui/gtk2/run.rb +47 -0
  531. data/lib/studium/gui/gtk2/show_curriculum_entries.rb +186 -0
  532. data/lib/studium/gui/gtk2/simple_widget_question_answer.rb +185 -0
  533. data/lib/studium/gui/gtk2/vbox.rb +748 -0
  534. data/lib/studium/gui/gtk3/README.md +1 -0
  535. data/lib/studium/gui/gtk3/studium_panel.rb +54 -0
  536. data/lib/studium/lectures/show_lectures_on_the_commandline/constants.rb +22 -0
  537. data/lib/studium/lectures/show_lectures_on_the_commandline/determine.rb +630 -0
  538. data/lib/studium/lectures/show_lectures_on_the_commandline/help.rb +44 -0
  539. data/lib/studium/lectures/show_lectures_on_the_commandline/html.rb +599 -0
  540. data/lib/studium/lectures/show_lectures_on_the_commandline/initialize.rb +53 -0
  541. data/lib/studium/lectures/show_lectures_on_the_commandline/konsole.rb +32 -0
  542. data/lib/studium/lectures/show_lectures_on_the_commandline/menu.rb +466 -0
  543. data/lib/studium/lectures/show_lectures_on_the_commandline/misc.rb +598 -0
  544. data/lib/studium/lectures/show_lectures_on_the_commandline/reset.rb +120 -0
  545. data/lib/studium/lectures/show_lectures_on_the_commandline/run.rb +44 -0
  546. data/lib/studium/lectures/show_lectures_on_the_commandline/show.rb +106 -0
  547. data/lib/studium/lectures/show_lectures_on_the_commandline/show_lectures_on_the_commandline.rb +491 -0
  548. data/lib/studium/lectures/show_lectures_on_the_commandline/sorted_individual_curricula.rb +117 -0
  549. data/lib/studium/logging/README.md +2 -0
  550. data/lib/studium/logging/ensure_that_the_log_directory_exists.rb +47 -0
  551. data/lib/studium/logging/html_log_directory.rb +35 -0
  552. data/lib/studium/logging/log_directory.rb +100 -0
  553. data/lib/studium/logging/store_last_question_asked_into_file.rb +138 -0
  554. data/lib/studium/misc/return_remote_homepage_of_this_lecture.rb +8661 -0
  555. data/lib/studium/misc/return_remote_moodle_link_of_this_lecture.rb +1343 -0
  556. data/lib/studium/parsers/README.md +2 -0
  557. data/lib/studium/parsers/custom_exam_results_parser.rb +208 -0
  558. data/lib/studium/parsers/parse_lva_dates.rb +190 -0
  559. data/lib/studium/pdf/README.md +2 -0
  560. data/lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb +277 -0
  561. data/lib/studium/project/project.rb +80 -0
  562. data/lib/studium/requires/common_popular_requires.rb +37 -0
  563. data/lib/studium/requires/commonly_used_requires.rb +13 -0
  564. data/lib/studium/requires/require_class_exams_solved.rb +7 -0
  565. data/lib/studium/requires/require_ects_scripts.rb +25 -0
  566. data/lib/studium/requires/require_encoding.rb +7 -0
  567. data/lib/studium/requires/require_the_exam_scripts.rb +37 -0
  568. data/lib/studium/requires/require_the_studium_constants.rb +14 -0
  569. data/lib/studium/requires/require_the_studium_project.rb +47 -0
  570. data/lib/studium/requires/require_the_utility_scripts.rb +26 -0
  571. data/lib/studium/requires/require_toplevel_methods.rb +26 -0
  572. data/lib/studium/requires/require_upcoming_exams.rb +7 -0
  573. data/lib/studium/requires/require_yaml.rb +7 -0
  574. data/lib/studium/requires/with_GUI.rb +12 -0
  575. data/lib/studium/requires/www_mode.rb +17 -0
  576. data/lib/studium/sinatra/app.rb +225 -0
  577. data/lib/studium/sinatra/misc.rb +111 -0
  578. data/lib/studium/statistics/README.md +4 -0
  579. data/lib/studium/statistics/best_exam_months.rb +81 -0
  580. data/lib/studium/statistics/curriculum_comparer.rb +344 -0
  581. data/lib/studium/statistics/determine_exam_statistics_from_this_file.rb +140 -0
  582. data/lib/studium/statistics/max_stats.rb +171 -0
  583. data/lib/studium/statistics/report_how_many_ects_points_per_curriculum_were_completed.rb +172 -0
  584. data/lib/studium/statistics/report_how_many_exam_questions_were_answered.rb +478 -0
  585. data/lib/studium/statistics/show_exam_statistics.rb +60 -0
  586. data/lib/studium/statistics/top_stats.rb +122 -0
  587. data/lib/studium/steop/README.md +4 -0
  588. data/lib/studium/steop/show_all_steop_lectures.rb +101 -0
  589. data/lib/studium/steop/steop_lectures_in_this_curriculum.rb +291 -0
  590. data/lib/studium/steop/steop_lva_dates.rb +102 -0
  591. data/lib/studium/toplevel_methods/all_passed_exams.rb +35 -0
  592. data/lib/studium/toplevel_methods/already_solved_this_lecture.rb +98 -0
  593. data/lib/studium/toplevel_methods/available_curricula.rb +71 -0
  594. data/lib/studium/toplevel_methods/available_topics.rb +145 -0
  595. data/lib/studium/toplevel_methods/average_grade.rb +141 -0
  596. data/lib/studium/toplevel_methods/calculate_pr/303/274fungsimmanente_lectures_from_this_file.rb +55 -0
  597. data/lib/studium/toplevel_methods/cd.rb +25 -0
  598. data/lib/studium/toplevel_methods/cd_stud.rb +134 -0
  599. data/lib/studium/toplevel_methods/copy_the_last_backup_of_file_lecture_information.rb +27 -0
  600. data/lib/studium/toplevel_methods/determine_local_directory_of_this_lecture.rb +72 -0
  601. data/lib/studium/toplevel_methods/does_this_course_require_mandatory_presence.rb +44 -0
  602. data/lib/studium/toplevel_methods/download.rb +157 -0
  603. data/lib/studium/toplevel_methods/e.rb +16 -0
  604. data/lib/studium/toplevel_methods/ects_from_lectures.rb +251 -0
  605. data/lib/studium/toplevel_methods/editor.rb +64 -0
  606. data/lib/studium/toplevel_methods/esystem.rb +22 -0
  607. data/lib/studium/toplevel_methods/exams_dataset.rb +45 -0
  608. data/lib/studium/toplevel_methods/filter_away_invalid_questions.rb +77 -0
  609. data/lib/studium/toplevel_methods/find_exam_topic_and_exam_title.rb +2771 -0
  610. data/lib/studium/toplevel_methods/from_curriculum_id_to_university.rb +47 -0
  611. data/lib/studium/toplevel_methods/frozen.rb +32 -0
  612. data/lib/studium/toplevel_methods/handle_archive_of_the_exam_questions.rb +136 -0
  613. data/lib/studium/toplevel_methods/has_a_bachelor_or_master_curriculum.rb +84 -0
  614. data/lib/studium/toplevel_methods/has_this_lecture_been_already_passed_but_the_id_was_changed_lateron.rb +41 -0
  615. data/lib/studium/toplevel_methods/has_this_module_been_completed.rb +206 -0
  616. data/lib/studium/toplevel_methods/install_the_project_on_the_given_hostsystem.rb +32 -0
  617. data/lib/studium/toplevel_methods/is_on_roebe.rb +26 -0
  618. data/lib/studium/toplevel_methods/is_this_exam_topic_included.rb +46 -0
  619. data/lib/studium/toplevel_methods/is_this_homepage_registered.rb +31 -0
  620. data/lib/studium/toplevel_methods/is_this_lecture_a_practical_course.rb +100 -0
  621. data/lib/studium/toplevel_methods/is_this_lecture_part_of_the_vector_curriculum.rb +110 -0
  622. data/lib/studium/toplevel_methods/is_this_lecture_registered_in_upcoming_exams.rb +43 -0
  623. data/lib/studium/toplevel_methods/lecture_information.rb +101 -0
  624. data/lib/studium/toplevel_methods/lectures_without_attribution_to_any_curriculum.rb +42 -0
  625. data/lib/studium/toplevel_methods/lva_numbers.rb +339 -0
  626. data/lib/studium/toplevel_methods/main_dataset.rb +73 -0
  627. data/lib/studium/toplevel_methods/map_curriculum_number_to_curriculum_name.rb +97 -0
  628. data/lib/studium/toplevel_methods/methods_related_to_curricula.rb +47 -0
  629. data/lib/studium/toplevel_methods/methods_related_to_files.rb +197 -0
  630. data/lib/studium/toplevel_methods/mkdir.rb +25 -0
  631. data/lib/studium/toplevel_methods/n_questions_available.rb +128 -0
  632. data/lib/studium/toplevel_methods/n_topics_available.rb +63 -0
  633. data/lib/studium/toplevel_methods/name_of_this_curriculum.rb +38 -0
  634. data/lib/studium/toplevel_methods/names_of_all_solved_exams.rb +71 -0
  635. data/lib/studium/toplevel_methods/note_down_the_start_time_and_how_many_exams_have_been_already_solved.rb +70 -0
  636. data/lib/studium/toplevel_methods/opnn.rb +25 -0
  637. data/lib/studium/toplevel_methods/passed_this_exam_on.rb +105 -0
  638. data/lib/studium/toplevel_methods/pristine.rb +69 -0
  639. data/lib/studium/toplevel_methods/read_dataset_from_a_curriculum_file.rb +133 -0
  640. data/lib/studium/toplevel_methods/read_delay_between_questions_from_file.rb +34 -0
  641. data/lib/studium/toplevel_methods/regexes.rb +90 -0
  642. data/lib/studium/toplevel_methods/registered_for_this_exam.rb +62 -0
  643. data/lib/studium/toplevel_methods/remote_url.rb +57 -0
  644. data/lib/studium/toplevel_methods/remove_comments.rb +26 -0
  645. data/lib/studium/toplevel_methods/remove_exam_topics_that_were_already_answered.rb +27 -0
  646. data/lib/studium/toplevel_methods/remove_tags.rb +26 -0
  647. data/lib/studium/toplevel_methods/report.rb +143 -0
  648. data/lib/studium/toplevel_methods/report_all_lectures_matching_this_lecture_type.rb +45 -0
  649. data/lib/studium/toplevel_methods/report_attributed_lectures_to_universities.rb +30 -0
  650. data/lib/studium/toplevel_methods/report_n_ects_per_university.rb +63 -0
  651. data/lib/studium/toplevel_methods/report_n_entries_in_the_file_lecture_information.rb +36 -0
  652. data/lib/studium/toplevel_methods/report_nquestions_of.rb +96 -0
  653. data/lib/studium/toplevel_methods/report_solved_topics.rb +56 -0
  654. data/lib/studium/toplevel_methods/return_all_exams_on_this_day.rb +66 -0
  655. data/lib/studium/toplevel_methods/return_curriculum_of_this_lva_number.rb +82 -0
  656. data/lib/studium/toplevel_methods/return_dataset_for_this_exam_topic.rb +41 -0
  657. data/lib/studium/toplevel_methods/return_dataset_from_this_curriculum_file.rb +150 -0
  658. data/lib/studium/toplevel_methods/return_directory_for.rb +66 -0
  659. data/lib/studium/toplevel_methods/return_div_timetable_of_upcoming_exams.rb +489 -0
  660. data/lib/studium/toplevel_methods/return_ects_from_this_lecture_stored_in_the_file_lecture_information.rb +197 -0
  661. data/lib/studium/toplevel_methods/return_hash_of_already_solved_lectures.rb +41 -0
  662. data/lib/studium/toplevel_methods/return_local_path_of_this_pwdstud.rb +59 -0
  663. data/lib/studium/toplevel_methods/return_lva_number_of_this_lecture.rb +72 -0
  664. data/lib/studium/toplevel_methods/return_n_percent_solved_from_this_topic.rb +75 -0
  665. data/lib/studium/toplevel_methods/return_n_questions_were_answered_for_this_topic.rb +37 -0
  666. data/lib/studium/toplevel_methods/return_proper_university_image.rb +80 -0
  667. data/lib/studium/toplevel_methods/return_question_answer_string_from_this_topic.rb +56 -0
  668. data/lib/studium/toplevel_methods/return_sanitized_dataset_from_the_file_lecture_information.rb +126 -0
  669. data/lib/studium/toplevel_methods/return_theme_of_the_next_upcoming_exam.rb +38 -0
  670. data/lib/studium/toplevel_methods/return_this_curriculum_as_a_string.rb +26 -0
  671. data/lib/studium/toplevel_methods/return_title_from_this_curriculum_file.rb +91 -0
  672. data/lib/studium/toplevel_methods/rinstall2.rb +34 -0
  673. data/lib/studium/toplevel_methods/rti_conflict.rb +29 -0
  674. data/lib/studium/toplevel_methods/runmode.rb +86 -0
  675. data/lib/studium/toplevel_methods/sanitize_this_theme_topic.rb +128 -0
  676. data/lib/studium/toplevel_methods/sanitized_dataset_from_file_passed_exams_per_month.rb +52 -0
  677. data/lib/studium/toplevel_methods/save_all_registered_upcoming_exams.rb +62 -0
  678. data/lib/studium/toplevel_methods/save_file.rb +81 -0
  679. data/lib/studium/toplevel_methods/save_this_delay_between_questions_and_answers.rb +43 -0
  680. data/lib/studium/toplevel_methods/set_last_file_for_exam_questions.rb +64 -0
  681. data/lib/studium/toplevel_methods/set_this_cd_alias_to.rb +86 -0
  682. data/lib/studium/toplevel_methods/show_passed_ects_in_the_individual_bachelor_and_master_curricula.rb +81 -0
  683. data/lib/studium/toplevel_methods/show_passed_exams_having_this_grade.rb +27 -0
  684. data/lib/studium/toplevel_methods/spacer.rb +18 -0
  685. data/lib/studium/toplevel_methods/time.rb +220 -0
  686. data/lib/studium/toplevel_methods/total_ects_points_passed.rb +72 -0
  687. data/lib/studium/toplevel_methods/try_to_guess_the_most_likely_lva_id.rb +57 -0
  688. data/lib/studium/toplevel_methods/try_to_return_the_expanded_name_of_this_lecture.rb +63 -0
  689. data/lib/studium/toplevel_methods/unfinished.rb +51 -0
  690. data/lib/studium/toplevel_methods/url.rb +74 -0
  691. data/lib/studium/toplevel_methods/verbose_truth.rb +21 -0
  692. data/lib/studium/toplevel_methods/when_was_this_lecture_passed.rb +53 -0
  693. data/lib/studium/toplevel_methods/yes_or_no_ja_oder_nein.rb +33 -0
  694. data/lib/studium/tu_vienna/README.md +6 -0
  695. data/lib/studium/tu_vienna/tu_ferien.rb +38 -0
  696. data/lib/studium/tu_vienna/tu_/303/266ffnungszeiten.rb +29 -0
  697. data/lib/studium/utility_scripts/attribute_lecture_to_curriculum/attribute_boku_lecture_to_curriculum.rb +389 -0
  698. data/lib/studium/utility_scripts/attribute_lecture_to_curriculum/attribute_lecture_to_curriculum.rb +236 -0
  699. data/lib/studium/utility_scripts/attribute_lectures_to_university/attribute_lectures_to_university.rb +385 -0
  700. data/lib/studium/utility_scripts/audio_stats.rb +176 -0
  701. data/lib/studium/utility_scripts/auto_stud/auto_stud.rb +253 -0
  702. data/lib/studium/utility_scripts/auto_stud/constants.rb +23 -0
  703. data/lib/studium/utility_scripts/auto_stud/initialize.rb +23 -0
  704. data/lib/studium/utility_scripts/auto_stud/misc.rb +18 -0
  705. data/lib/studium/utility_scripts/autopurge_this_lecture_date.rb +101 -0
  706. data/lib/studium/utility_scripts/calendar/README.md +2 -0
  707. data/lib/studium/utility_scripts/calendar/calendar.rb +244 -0
  708. data/lib/studium/utility_scripts/calendar/misc.rb +35 -0
  709. data/lib/studium/utility_scripts/check_description_of_these_lectures.rb +224 -0
  710. data/lib/studium/utility_scripts/clean_up_lecture_date.rb +151 -0
  711. data/lib/studium/utility_scripts/current_lectures_belonging_to_both_bachelor_and_master_curriculum.rb +113 -0
  712. data/lib/studium/utility_scripts/currently_participating_in_these_lectures.rb +104 -0
  713. data/lib/studium/utility_scripts/display_lecture_url.rb +117 -0
  714. data/lib/studium/utility_scripts/expand_time_range.rb +422 -0
  715. data/lib/studium/utility_scripts/find_duplicate_lectures.rb +121 -0
  716. data/lib/studium/utility_scripts/finished_exams_at_this_university.rb +94 -0
  717. data/lib/studium/utility_scripts/foreign_language_percentage/constants.rb +28 -0
  718. data/lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb +142 -0
  719. data/lib/studium/utility_scripts/foreign_language_percentage/help.rb +29 -0
  720. data/lib/studium/utility_scripts/foreign_language_percentage/initialize.rb +25 -0
  721. data/lib/studium/utility_scripts/foreign_language_percentage/menu.rb +141 -0
  722. data/lib/studium/utility_scripts/foreign_language_percentage/report.rb +62 -0
  723. data/lib/studium/utility_scripts/foreign_language_percentage/reset.rb +57 -0
  724. data/lib/studium/utility_scripts/foreign_language_percentage/run.rb +19 -0
  725. data/lib/studium/utility_scripts/generate_spreadsheet.rb +349 -0
  726. data/lib/studium/utility_scripts/holidays.rb +143 -0
  727. data/lib/studium/utility_scripts/lecture_downloader.rb +115 -0
  728. data/lib/studium/utility_scripts/lectures_attributed_to_universities.rb +344 -0
  729. data/lib/studium/utility_scripts/lva_nummer.rb +440 -0
  730. data/lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb +321 -0
  731. data/lib/studium/utility_scripts/name_of_this_lva_id.rb +110 -0
  732. data/lib/studium/utility_scripts/new_stud.rb +332 -0
  733. data/lib/studium/utility_scripts/next_week.rb +111 -0
  734. data/lib/studium/utility_scripts/passed_ects_per_year.rb +172 -0
  735. data/lib/studium/utility_scripts/passed_pr/303/274fungsimmanente_courses/passed_pr/303/274fungsimmanente_courses.rb +181 -0
  736. data/lib/studium/utility_scripts/prepare_individual_curriculum.rb +182 -0
  737. data/lib/studium/utility_scripts/priority.rb +126 -0
  738. data/lib/studium/utility_scripts/priority_points.rb +263 -0
  739. data/lib/studium/utility_scripts/publish_my_exams.rb +174 -0
  740. data/lib/studium/utility_scripts/regexes/README.md +2 -0
  741. data/lib/studium/utility_scripts/regexes/generate_regex.rb +278 -0
  742. data/lib/studium/utility_scripts/regexes/generate_regexes_for_the_available_moodle_links.rb +54 -0
  743. data/lib/studium/utility_scripts/regexes/generate_regexes_for_the_registered_lectures.rb +48 -0
  744. data/lib/studium/utility_scripts/report_outdated_timetable_entries.rb +148 -0
  745. data/lib/studium/utility_scripts/report_total_amount_of_questions_and_answers_for.rb +120 -0
  746. data/lib/studium/utility_scripts/report_whether_this_lecture_is_registered_in_the_file_lecture_information.rb +125 -0
  747. data/lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/individual_resolve_practical_courses_date_conflicts.rb +257 -0
  748. data/lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb +273 -0
  749. data/lib/studium/utility_scripts/scrape_remote_university_url.rb +146 -0
  750. data/lib/studium/utility_scripts/semester_schedule_creator/semester_container.rb +142 -0
  751. data/lib/studium/utility_scripts/semester_schedule_creator/semester_schedule_creator.rb +381 -0
  752. data/lib/studium/utility_scripts/semesterplaner.rb +289 -0
  753. data/lib/studium/utility_scripts/show_all_lectures.rb +403 -0
  754. data/lib/studium/utility_scripts/show_all_passed_master_lectures.rb +127 -0
  755. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/constants.rb +56 -0
  756. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/do_report_the_upcoming_exams.rb +60 -0
  757. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/help.rb +49 -0
  758. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/initialize.rb +28 -0
  759. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/menu.rb +54 -0
  760. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/misc.rb +214 -0
  761. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/report.rb +118 -0
  762. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/reset.rb +80 -0
  763. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/run.rb +22 -0
  764. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/show_conflicting_lva_lectures.rb +651 -0
  765. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/constants.rb +28 -0
  766. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/menu.rb +62 -0
  767. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/reset.rb +36 -0
  768. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/run.rb +35 -0
  769. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/show_descriptions_of_lectures_belonging_to_this_module.rb +145 -0
  770. data/lib/studium/utility_scripts/show_lecturers/show_lecturers.rb +145 -0
  771. data/lib/studium/utility_scripts/show_lectures/constants.rb +16 -0
  772. data/lib/studium/utility_scripts/show_lectures/help.rb +34 -0
  773. data/lib/studium/utility_scripts/show_lectures/initialize.rb +23 -0
  774. data/lib/studium/utility_scripts/show_lectures/menu.rb +106 -0
  775. data/lib/studium/utility_scripts/show_lectures/misc.rb +582 -0
  776. data/lib/studium/utility_scripts/show_lectures/reset.rb +92 -0
  777. data/lib/studium/utility_scripts/show_lectures/run.rb +27 -0
  778. data/lib/studium/utility_scripts/show_lectures/show_lectures.rb +48 -0
  779. data/lib/studium/utility_scripts/show_lectures_fitting_to_this_language.rb +129 -0
  780. data/lib/studium/utility_scripts/show_lectures_fitting_to_this_theme.rb +100 -0
  781. data/lib/studium/utility_scripts/show_lectures_on_this_day.rb +154 -0
  782. data/lib/studium/utility_scripts/show_lva_dates_of_this_lecture.rb +177 -0
  783. data/lib/studium/utility_scripts/show_outdated_lva_dates.rb +218 -0
  784. data/lib/studium/utility_scripts/show_solved_english_lectures.rb +139 -0
  785. data/lib/studium/utility_scripts/show_the_associated_lectures_for_the_individual_curriculum.rb +285 -0
  786. data/lib/studium/utility_scripts/studienkennzahl.rb +109 -0
  787. data/lib/studium/utility_scripts/studium_skeleton.rb +220 -0
  788. data/lib/studium/utility_scripts/stundenplan.rb +603 -0
  789. data/lib/studium/utility_scripts/sync_studium_relevant_entries_one_level_downwards.rb +221 -0
  790. data/lib/studium/utility_scripts/ufind.rb +101 -0
  791. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/constants.rb +31 -0
  792. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/run.rb +20 -0
  793. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/upcoming_mandatory_presence_courses.rb +179 -0
  794. data/lib/studium/utility_scripts/vorbesprechungen.rb +293 -0
  795. data/lib/studium/utility_scripts/week_parser/constants.rb +28 -0
  796. data/lib/studium/utility_scripts/week_parser/help.rb +32 -0
  797. data/lib/studium/utility_scripts/week_parser/menu.rb +56 -0
  798. data/lib/studium/utility_scripts/week_parser/misc.rb +51 -0
  799. data/lib/studium/utility_scripts/week_parser/reset.rb +55 -0
  800. data/lib/studium/utility_scripts/week_parser/run.rb +18 -0
  801. data/lib/studium/utility_scripts/week_parser/show.rb +242 -0
  802. data/lib/studium/utility_scripts/week_parser/week_parser.rb +362 -0
  803. data/lib/studium/utility_scripts/weekday_parser.rb +159 -0
  804. data/lib/studium/utility_scripts/weekly_schedule.rb +209 -0
  805. data/lib/studium/utility_scripts/wochenplanung.rb +278 -0
  806. data/lib/studium/version/version.rb +46 -0
  807. data/lib/studium/www/curricula_displayer.cgi +170 -0
  808. data/lib/studium/www/curriculum_displayer.rb +162 -0
  809. data/lib/studium/www/exams.cgi +50 -0
  810. data/lib/studium/www/statistics.cgi +55 -0
  811. data/lib/studium/yaml/allowed_themes_for_exams.yml +307 -0
  812. data/lib/studium/yaml/array_allowed_entries_for_the_file_lecture_information.yml +68 -0
  813. data/lib/studium/yaml/backlog_of_exams.yml +35 -0
  814. data/lib/studium/yaml/current_exams.yml +19 -0
  815. data/lib/studium/yaml/curricula.yml +530 -0
  816. data/lib/studium/yaml/curricula/README.md +3 -0
  817. data/lib/studium/yaml/curricula/bachelor_agrarwissenschaften_033255.yml +130 -0
  818. data/lib/studium/yaml/curricula/bachelor_biologie_basisblock_033630.yml +65 -0
  819. data/lib/studium/yaml/curricula/bachelor_biologie_botanik_033630.yml +84 -0
  820. data/lib/studium/yaml/curricula/bachelor_biologie_ecology_033630.yml +74 -0
  821. data/lib/studium/yaml/curricula/bachelor_biologie_mikrobiologie_und_genetik_033630.yml +120 -0
  822. data/lib/studium/yaml/curricula/bachelor_biologie_molekulare_biologie_033630.yml +104 -0
  823. data/lib/studium/yaml/curricula/bachelor_biologie_zoologie_033630.yml +87 -0
  824. data/lib/studium/yaml/curricula/bachelor_chemie_033662.yml +164 -0
  825. data/lib/studium/yaml/curricula/bachelor_dummy_curriculum.yml +135 -0
  826. data/lib/studium/yaml/curricula/bachelor_elektrotechnik_und_informationstechnik_033235.yml +13 -0
  827. data/lib/studium/yaml/curricula/bachelor_forstwirtschaft_033225.yml +105 -0
  828. data/lib/studium/yaml/curricula/bachelor_informatik_033521.yml +130 -0
  829. data/lib/studium/yaml/curricula/bachelor_informatik_und_molekulare_biologie.yml +1144 -0
  830. data/lib/studium/yaml/curricula/bachelor_ktww_033231.yml +84 -0
  831. data/lib/studium/yaml/curricula/bachelor_lmbt_033217.yml +108 -0
  832. data/lib/studium/yaml/curricula/bachelor_medizinische_informatik_033533.yml +200 -0
  833. data/lib/studium/yaml/curricula/bachelor_molekularbiologie_033665.yml +93 -0
  834. data/lib/studium/yaml/curricula/bachelor_nutrition_science_033638.yml +117 -0
  835. data/lib/studium/yaml/curricula/bachelor_pharmazie_033305.yml +170 -0
  836. data/lib/studium/yaml/curricula/bachelor_technische_chemie_033290.yml +129 -0
  837. data/lib/studium/yaml/curricula/bachelor_technische_informatik_033535.yml +23 -0
  838. data/lib/studium/yaml/curricula/bachelor_ubrm_033227.yml +140 -0
  839. data/lib/studium/yaml/curricula/bachelor_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology.yml +1157 -0
  840. data/lib/studium/yaml/curricula/bachelor_verfahrenstechnik_033273.yml +167 -0
  841. data/lib/studium/yaml/curricula/bachelor_wirtschaftsinformatik_033526.yml +29 -0
  842. data/lib/studium/yaml/curricula/master_bioinformatics_and_molecular_biotechnology_including_aspects_from_molecular_medicine.yml +438 -0
  843. data/lib/studium/yaml/curricula/master_bioinformatik_066875.yml +76 -0
  844. data/lib/studium/yaml/curricula/master_biologie_molekulare_mikrobiologie_mikrobielle_oekologie_und_immunbiologie_066830.yml +78 -0
  845. data/lib/studium/yaml/curricula/master_biologische_chemie_066863.yml +61 -0
  846. data/lib/studium/yaml/curricula/master_dummy_curriculum.yml +137 -0
  847. data/lib/studium/yaml/curricula/master_food_science_and_plant_biotechnology.yml +30 -0
  848. data/lib/studium/yaml/curricula/master_genetik_und_entwicklungsbiologie_066877.yml +90 -0
  849. data/lib/studium/yaml/curricula/master_lmbt_066418.yml +65 -0
  850. data/lib/studium/yaml/curricula/master_molekulare_biologie_066834.yml +142 -0
  851. data/lib/studium/yaml/curricula/master_pharmazie_066605.yml +170 -0
  852. data/lib/studium/yaml/curricula/master_technische_chemie_066490.yml +123 -0
  853. data/lib/studium/yaml/curricula/master_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology.yml +741 -0
  854. data/lib/studium/yaml/custom_colours.yml +21 -0
  855. data/lib/studium/yaml/daily_questions_solved.yml +789 -0
  856. data/lib/studium/yaml/default_delay.yml +4 -0
  857. data/lib/studium/yaml/default_encoding.yml +1 -0
  858. data/lib/studium/yaml/directory_to_the_exam_topics.yml +0 -0
  859. data/lib/studium/yaml/editor.yml +1 -0
  860. data/lib/studium/yaml/file_for_exam_questions.yml +1 -0
  861. data/lib/studium/yaml/german/README.md +2 -0
  862. data/lib/studium/yaml/german/german_to_english_month_names.yml +16 -0
  863. data/lib/studium/yaml/grouped_themes.yml +187 -0
  864. data/lib/studium/yaml/holidays.yml +176 -0
  865. data/lib/studium/yaml/important_exams.yml +194 -0
  866. data/lib/studium/yaml/inscription_dates_of_universities.yml +58 -0
  867. data/lib/studium/yaml/lecture_aliases.yml +108 -0
  868. data/lib/studium/yaml/lecture_information.yml +47783 -0
  869. data/lib/studium/yaml/log_dir.yml +1 -0
  870. data/lib/studium/yaml/main_topic.yml +11 -0
  871. data/lib/studium/yaml/max_stats.yml +227 -0
  872. data/lib/studium/yaml/mitteilungsbl/303/244tter.yml +315 -0
  873. data/lib/studium/yaml/n_total_questions.yml +1 -0
  874. data/lib/studium/yaml/participating_in_these_courses.yml +50 -0
  875. data/lib/studium/yaml/rename_konsole_tab.yml +1 -0
  876. data/lib/studium/yaml/show_topic.yml +1 -0
  877. data/lib/studium/yaml/statistics.yml +57 -0
  878. data/lib/studium/yaml/use_colours.yml +1 -0
  879. data/studium.gemspec +79 -0
  880. data/test/testing_studium.rb +244 -0
  881. data/test/testing_time_component.rb +29 -0
  882. metadata +1079 -0
@@ -0,0 +1,1115 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === Studium::Exams::MandatoryContinuousAssessment
6
+ #
7
+ # This class allows us to determine how many exams that are "prüfungsimmanent"
8
+ # were passed already. That word means "mandatory continuous assessment"
9
+ # which usually means a seminar or a practical course that takes e. g.
10
+ # 1-3 weeks of daily participation.
11
+ #
12
+ # Usage example:
13
+ #
14
+ # Studium::Exams::MandatoryContinuousAssessment.new(ARGV)
15
+ #
16
+ # =========================================================================== #
17
+ # require 'studium/exams/mandatory_continuous_assessment/mandatory_continuous_assessment.rb'
18
+ # =========================================================================== #
19
+ require 'studium/base/base.rb'
20
+ # =========================================================================== #
21
+ # Next, require the sub-project internal .rb files.
22
+ # =========================================================================== #
23
+ require 'studium/exams/mandatory_continuous_assessment/compare.rb'
24
+ require 'studium/exams/mandatory_continuous_assessment/constants.rb'
25
+ require 'studium/exams/mandatory_continuous_assessment/help.rb'
26
+ require 'studium/exams/mandatory_continuous_assessment/initialize.rb'
27
+ require 'studium/exams/mandatory_continuous_assessment/menu.rb'
28
+ require 'studium/exams/mandatory_continuous_assessment/misc.rb'
29
+ require 'studium/exams/mandatory_continuous_assessment/reset.rb'
30
+ require 'studium/exams/mandatory_continuous_assessment/run.rb'
31
+ require 'studium/exams/mandatory_continuous_assessment/set_title_of_the_curriculum.rb'
32
+ require 'studium/exams/mandatory_continuous_assessment/show_and_report.rb'
33
+
34
+ module Studium
35
+
36
+ module Exams
37
+
38
+ class MandatoryContinuousAssessment < Studium::Base # === Studium::Exams::MandatoryContinuousAssessment
39
+
40
+ require 'studium/toplevel_methods/sanitized_dataset_from_file_passed_exams_per_month.rb'
41
+
42
+ # ========================================================================= #
43
+ # === set_input
44
+ # ========================================================================= #
45
+ def set_input(
46
+ i = ''
47
+ )
48
+ if i.is_a? Array # Intercept Arrays here.
49
+ if i.empty?
50
+ i << '--all' # This is the default value since as of May 2017.
51
+ end
52
+ end
53
+ if i.is_a? Array
54
+ i = menu(i)
55
+ i = i.join(' ').strip
56
+ end
57
+ i = i.to_s.dup
58
+ @input = i
59
+ end
60
+
61
+ # ========================================================================= #
62
+ # === return_entries_that_are_of_mandatory_continuous_assessment_type
63
+ #
64
+ # The input to this method is assumed to come from a file, but you
65
+ # can also load up a String. In that case, we will split on newlines.
66
+ # ========================================================================= #
67
+ def return_entries_that_are_of_mandatory_continuous_assessment_type(i)
68
+ if i.is_a? String
69
+ i = i.split(N) # Split on newlines.
70
+ end
71
+ i.flatten! if i.is_a? Array
72
+ i.reject! {|line|
73
+ line.strip.start_with?('#') or
74
+ line.strip.empty?
75
+ }
76
+ i.map!(&:strip)
77
+ i.select! {|line|
78
+ line.strip!
79
+ # ===================================================================== #
80
+ # We need to be careful here, because the line may either end with e.
81
+ # g. "VO", or it may end with "VO, BOKU WIEN". The latter would then
82
+ # cause the follow-up code to fail, so we have to filter way such
83
+ # parts first.
84
+ # ===================================================================== #
85
+ if line.end_with? 'BOKU'
86
+ line.sub!(/BOKU$/,'')
87
+ line.strip!
88
+ end
89
+ if line.end_with?('WIEN') or line.end_with?('Wien')
90
+ # =================================================================== #
91
+ # First remove "WIEN" at the end of the line, then strip on the line.
92
+ # =================================================================== #
93
+ line.sub!(/WIEN$/,'')
94
+ line.sub!(/Wien$/,'') if line.end_with? 'Wien'
95
+ line.strip!
96
+ line.sub!(/Uni$/,'') if line.end_with? 'Uni'
97
+ line.strip!
98
+ # =================================================================== #
99
+ # Still have TU, BOKU, VETMED and MEDUNI
100
+ # =================================================================== #
101
+ line.sub!(/BOKU$/,'') if line.end_with? 'BOKU'
102
+ line.sub!(/TU$/,'') if line.end_with? 'TU'
103
+ line.sub!(/VETMED$/,'') if line.end_with? 'VETMED'
104
+ line.sub!(/MEDUNI$/,'') if line.include? 'MEDUNI' # Must come before "UNI".
105
+ line.sub!(/UNI$/,'') if line.end_with? 'UNI'
106
+ line.strip!
107
+ end
108
+ line.chop! if line.end_with? ','
109
+ last_two_characters = line[-2,2]
110
+ ARRAY_LECTURE_TYPES_THAT_ARE_MANDATORY_CONTINUOUS_ASSESSMENT.include? last_two_characters
111
+ }
112
+ return i
113
+ end
114
+
115
+ # ========================================================================= #
116
+ # === original_commandline?
117
+ # ========================================================================= #
118
+ def original_commandline?
119
+ @original_commandline
120
+ end; alias commandline? original_commandline? # === commandline?
121
+ alias commandline_arguments? original_commandline? # === commandline_arguments?
122
+
123
+ # ========================================================================= #
124
+ # === total_amount_of_ects_points_in_the_curriculum
125
+ # ========================================================================= #
126
+ def total_amount_of_ects_points_in_the_curriculum?
127
+ @total_amount_of_ECTS_points_in_the_curriculum
128
+ end; alias n_total_ects_points total_amount_of_ects_points_in_the_curriculum? # === n_total_ects_points
129
+
130
+ # ========================================================================= #
131
+ # === input?
132
+ # ========================================================================= #
133
+ def input?
134
+ @input
135
+ end
136
+
137
+ # ========================================================================= #
138
+ # === set_percentage
139
+ # ========================================================================= #
140
+ def set_percentage(i)
141
+ @percentage = i.to_f
142
+ end
143
+
144
+ # ========================================================================= #
145
+ # === epowderblue
146
+ # ========================================================================= #
147
+ def epowderblue(i)
148
+ e powderblue(i) if @do_report_the_findings
149
+ end
150
+
151
+ # ========================================================================= #
152
+ # === obtain_default_dataset
153
+ #
154
+ # Simply assign the default dataset, from the file with the passed
155
+ # exams, to the instance variable @dataset.
156
+ # ========================================================================= #
157
+ def obtain_default_dataset
158
+ @dataset = ::Studium.sanitized_dataset_from_file_passed_exams_per_month
159
+ end
160
+
161
+ # ========================================================================= #
162
+ # === try_to_find_this_curriculum
163
+ #
164
+ # The second argument to this method will also show the curriculum
165
+ # number (and the name of the curriculum).
166
+ # ========================================================================= #
167
+ def try_to_find_this_curriculum(
168
+ i, optional_index = nil
169
+ )
170
+ if optional_index and @do_report_the_findings
171
+ # ===================================================================== #
172
+ # Report the curriculum number in this case.
173
+ # ===================================================================== #
174
+ e
175
+ e springgreen('Curriculum number: ')+
176
+ slateblue(optional_index.to_s)+
177
+ limegreen(" (#{name_of_the_curriculum?})")
178
+ e
179
+ end
180
+ be_verbose = be_verbose?
181
+ if block_given?
182
+ yielded = yield
183
+ case yielded
184
+ when :be_verbose
185
+ be_verbose = true
186
+ end
187
+ end
188
+ # ======================================================================= #
189
+ # In the following when-entries, it may be better to hardcode the
190
+ # path via a symbol such as :bachelor_mikrobiologie, since the
191
+ # given input may be so disparate.
192
+ # ======================================================================= #
193
+ case i.delete('-') # case tag
194
+ # ======================================================================= #
195
+ # === bachelor_biologische_informatik
196
+ # ======================================================================= #
197
+ when /^-?-?bachelor(-|_)?biologische(-|_)?informatik$/i,
198
+ /^-?-?indi3$/i
199
+ array = readlines(location_of(:bachelor_biologische_informatik)).flatten
200
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
201
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
202
+ # ======================================================================= #
203
+ # === bachelor_bioinformatik_und_molekulare_biotechnologie
204
+ # ======================================================================= #
205
+ when /^-?-?bachelor(-|_)?bioinformatik(-|_)?und(-|_)?molekulare(-|_)?biotechnologie$/i
206
+ array = readlines(location_of(:bachelor_bioinformatik_und_molekulare_biotechnologie)).flatten
207
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
208
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
209
+ # ======================================================================= #
210
+ # === bachelor_dummy_curriculum
211
+ # ======================================================================= #
212
+ when /^-?-?bachelor(-|_)?dummy(-|_)?curriculum$/i,
213
+ /^-?-?dummy$/i
214
+ array = readlines(location_of(:bachelor_dummy_curriculum)).flatten
215
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
216
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
217
+ # ======================================================================= #
218
+ # === mandatory vector_bachelor
219
+ #
220
+ # Show only the 180.0 ECTS Bachelor of the vector-curriculum.
221
+ # ======================================================================= #
222
+ when '4',
223
+ /^vector_?bachelor/,
224
+ /bachelor_?vector/,
225
+ /^-?-?bachelor(-|_)?vectorx$/,
226
+ /^-?-?bachelor_?vektor$/i,
227
+ 'bachelorvektorx',
228
+ /^-?-?bachelor$/i, # Default entry point.
229
+ 'vectors',
230
+ 'vectorx',
231
+ 'vektorx',
232
+ 'vektor',
233
+ /^-?-?bvektor$/i
234
+ array = readlines(location_of(:bachelor_vektoren)).flatten
235
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
236
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
237
+ # ======================================================================= #
238
+ # === bachelor_informatik
239
+ # ======================================================================= #
240
+ when /^bachelor(_|-)?informatik$/i
241
+ do_assume_180_ects_points
242
+ array = readlines(location_of(:bachelor_informatik)).flatten
243
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
244
+ set_title :bachelor_informatik
245
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
246
+ # ======================================================================= #
247
+ # === bachelor_technische_chemie
248
+ # ======================================================================= #
249
+ when /^bachelor(_|-)?technische(_|-)?chemie$/i
250
+ do_assume_180_ects_points
251
+ array = readlines(location_of(:bachelor_technische_chemie)).flatten
252
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
253
+ set_title :bachelor_technische_chemie
254
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
255
+ # ======================================================================= #
256
+ # === mandatory master_vectorx
257
+ #
258
+ # This is for the master vector-curriculum, 120.0 ECTS.
259
+ # ======================================================================= #
260
+ when '1','vector','masterindividuell', # This is for 120.0 ECTS points.
261
+ 'vectormaster','mastervector',
262
+ 'mastervektorx','master',
263
+ /^master(_|-)?vectorx$/,
264
+ /^master(_|-)?vektor$/i,
265
+ /^master(_|-)vector$/,
266
+ /^mastervektoren$/
267
+ do_assume_120_ects_points
268
+ array = # readlines(location_of(:bachelor_vektoren))+
269
+ readlines(location_of(:master_vektoren)).flatten
270
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
271
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
272
+ # ======================================================================= #
273
+ # === bachelor_molekularbiologie_curriculum
274
+ # ======================================================================= #
275
+ when /^bachelor(_|-)?molekularbiologie$/i,
276
+ /^bachelor(_|-)?molekularbiologie(_|-)?curriculum$/i,
277
+ /^bachelor(_|-)?molekularbiologie(_|-)?graz$/i
278
+ do_assume_180_ects_points
279
+ array = readlines(location_of(:bachelor_molekularbiologie_curriculum)).flatten
280
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
281
+ set_title :bachelor_molekularbiologie_curriculum
282
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
283
+ # ======================================================================= #
284
+ # === bachelor_nutrition_science
285
+ # ======================================================================= #
286
+ when /^bachelor(_|-)?nutrition(_|-)?science$/i,
287
+ '5','ern','ernährungswissenschaften'
288
+ do_assume_180_ects_points
289
+ array = readlines(location_of(:bachelor_nutrition_science)).flatten
290
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
291
+ set_title :bachelor_nutrition_science
292
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
293
+ # ======================================================================= #
294
+ # === bachelor_pharmazie
295
+ # ======================================================================= #
296
+ when /^bachelor(_|-)?pharmazie$/i
297
+ do_assume_180_ects_points
298
+ array = readlines(location_of(:bachelor_pharmazie)).flatten
299
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
300
+ set_title :bachelor_pharmazie
301
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
302
+ # ======================================================================= #
303
+ # === mandatory master_biologische_chemie
304
+ # ======================================================================= #
305
+ when /^master(_|-)?pharmazie(_|-)?curriculum$/i,
306
+ /^master(_|-)?pharmazie$/i,
307
+ /^mpharmazie$/
308
+ do_assume_120_ects_points
309
+ array = readlines(location_of(:master_pharmazie)).flatten
310
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
311
+ set_title :master_pharmazie
312
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
313
+ # ======================================================================= #
314
+ # === mandatory bachelor_chemie
315
+ # ======================================================================= #
316
+ when '7','chemie',
317
+ /^bachelor_?chemie/,
318
+ /^bachelor_?chemistry/
319
+ do_assume_180_ects_points
320
+ array = readlines(location_of(:bachelor_chemistry)).flatten
321
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
322
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
323
+ # ======================================================================= #
324
+ # === mandatory master_biologische_chemie
325
+ # ======================================================================= #
326
+ when /^master(_|-)?biologische(_|-)?chemie$/i,
327
+ /^biologische(_|-)?chemie$/i
328
+ do_assume_120_ects_points
329
+ array = readlines(location_of(:master_biologische_chemie)).flatten
330
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
331
+ set_title :master_biologische_chemie
332
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
333
+ # ======================================================================= #
334
+ # === master_genetik_und_entwicklungsbiologie
335
+ # ======================================================================= #
336
+ when /^master(-|_)?genetik(-|_)?und(-|_)?entwicklungsbiologie$/
337
+ do_assume_120_ects_points
338
+ array = readlines(location_of(:master_genetik_und_entwicklungsbiologie)).flatten
339
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
340
+ set_title :master_genetik_und_entwicklungsbiologie
341
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
342
+ # ======================================================================= #
343
+ # === mandatory bachelor_mikrobiologie
344
+ # ======================================================================= #
345
+ when /^bachelor(_|-)?mikrobiologie$/i,
346
+ /^bachelor(_|-)?microbiology$/i
347
+ do_assume_180_ects_points
348
+ array = readlines(location_of(:bachelor_mikrobiologie)).flatten
349
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
350
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
351
+ # ======================================================================= #
352
+ # === mandatory master_bioinformatik
353
+ # ======================================================================= #
354
+ when /^master(-|_)?bioinformatik$/,
355
+ /^master(-|_)?bioinformatics$/
356
+ do_assume_120_ects_points
357
+ array = readlines(location_of(:master_bioinformatik)).flatten
358
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
359
+ set_title :master_bioinformatik
360
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
361
+ # ======================================================================= #
362
+ # === bachelor_medizinische_informatik
363
+ # ======================================================================= #
364
+ when /^-?-?bachelor(-|_)?medizinische(-|_)?informatik/
365
+ do_assume_180_ects_points
366
+ set_title :bachelor_medizinische_informatik
367
+ array = readlines(location_of(i)).flatten
368
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
369
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
370
+ # ======================================================================= #
371
+ # === mandatory master_biotech
372
+ # ======================================================================= #
373
+ when /^master(-|_)?biotech$/,
374
+ /^master(-|_)?lmbt$/
375
+ do_assume_120_ects_points
376
+ array = readlines(location_of(:master_lmbt)).flatten
377
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
378
+ set_title :master_biotech
379
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
380
+ # ======================================================================= #
381
+ # === bachelor_botanik
382
+ # ======================================================================= #
383
+ when /^bachelor(_|-)?botanik$/i
384
+ do_assume_180_ects_points
385
+ set_title :bachelor_botanik
386
+ array = readlines(location_of(i.to_sym)).flatten
387
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
388
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
389
+ # ======================================================================= #
390
+ # === bachelor_molekulare_biologie
391
+ # ======================================================================= #
392
+ when /^bachelor(_|-)?molekulare(_|-)?biologie$/i,
393
+ /^bachelor(_|-)?molbio$/i
394
+ do_assume_180_ects_points
395
+ array = readlines(location_of(:bachelor_molbio)).flatten
396
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
397
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
398
+ # ======================================================================= #
399
+ # === bachelor_agrarwissenschaften
400
+ # ======================================================================= #
401
+ when /^bachelor(_|-)?agrarwissenschaften$/i
402
+ do_assume_180_ects_points
403
+ array = readlines(location_of(i.to_sym)).flatten
404
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
405
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
406
+ # ======================================================================= #
407
+ # === master_tu_vienna_biotechnology
408
+ # ======================================================================= #
409
+ when /^master(-|_)?tu(-|_)?vienna(-|_)?biotechnology$/
410
+ do_assume_120_ects_points
411
+ array = readlines(location_of(i.to_sym)).flatten
412
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
413
+ set_title :master_tu_vienna_biotechnology
414
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
415
+ # ======================================================================= #
416
+ # === mandatory bachelor_lmbt
417
+ # ======================================================================= #
418
+ when '11',
419
+ /^bachelor(_|-)?lmbt/,
420
+ 'lmbt',
421
+ 'lbt'
422
+ do_assume_180_ects_points
423
+ array = readlines(location_of(:bachelor_lmbt)).flatten
424
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
425
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
426
+ # ======================================================================= #
427
+ # === mandatory bachelor_genetics
428
+ # ======================================================================= #
429
+ when '6','genetics','genetik',/bachelor_?genetics?/,'genetic',
430
+ /^bachelor(-|_)?genetics$/,
431
+ /bachelor_?genetik/
432
+ array = readlines(
433
+ return_file_for_this_curriculum(
434
+ :bachelor_biologie_mikrobiologie_und_genetik
435
+ )
436
+ )+readlines(location_of(:bachelor_biologie_basisblock)).flatten
437
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
438
+ set_title 'Bachelorcurriculum Genetik'
439
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
440
+ # ======================================================================= #
441
+ # === mandatory bachelor_master_vektoren
442
+ #
443
+ # This is only the full 300.0 ECTS curriculum.
444
+ # ======================================================================= #
445
+ when /bachelor_?master_?vektoren/i,
446
+ /bachelor_?master_?vectorx/i,
447
+ /bachelor_?master_?vector/i
448
+ do_assume_300_points
449
+ array = (readlines(location_of(:bachelor_vektoren)).flatten+
450
+ readlines(location_of(:master_vektoren)).flatten).flatten
451
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
452
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
453
+ # ======================================================================= #
454
+ # === mandatory master_molbio
455
+ #
456
+ # The molbio master at the university of vienna, for 120.0 ECTS points.
457
+ # ======================================================================= #
458
+ when '2',
459
+ /^-?-?master(_|-)?molbio/,
460
+ /^-?-?molbio(_|-)?master/,
461
+ 'molbio' # mandatory --molbio_master
462
+ do_assume_120_ects_points
463
+ array = readlines(location_of(:master_molbio)).flatten
464
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
465
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
466
+ # ======================================================================= #
467
+ # === mandatory bachelormasterimmuno
468
+ #
469
+ # This is the combination of the Biology basis building block, then
470
+ # the genetic building block, and then the master immuno.
471
+ # ======================================================================= #
472
+ when /bachelor_?master_?immuno/
473
+ do_assume_300_ects_points
474
+ array = readlines(location_of(:bachelor_biologie_basisblock))+
475
+ readlines(location_of(:bachelor_genetik))+
476
+ readlines(location_of(:master_immuno)).flatten
477
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
478
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
479
+ # ======================================================================= #
480
+ # === mandatory master_immuno
481
+ # ======================================================================= #
482
+ when '3',
483
+ /-?-?master_?immuno/,
484
+ /-?-?immuno_?master/, # mandatory --immuno_master
485
+ 'immuno'
486
+ do_assume_120_ects_points
487
+ array = readlines(location_of(:master_immuno)).flatten
488
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
489
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
490
+ # ======================================================================= #
491
+ # === mandatory tuvienna_biotechmaster
492
+ # ======================================================================= #
493
+ when '10',/tu_?vienna_?biotech_?master/
494
+ do_assume_120_ects_points
495
+ array = readlines(location_of(:master_tuvienna_biotechnology)).flatten
496
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(array)
497
+ padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(array, be_verbose)
498
+ else
499
+ unless i.include? '--'
500
+ opnn; e 'Unregistered input in the file '\
501
+ 'mandatory_continuous_assessment.rb: '+
502
+ sfancy(i)+' (class: '+i.class.to_s+')'
503
+ end
504
+ end
505
+ end
506
+
507
+ # ========================================================================= #
508
+ # === display_these_lectures_sorted_by_priority
509
+ #
510
+ # Do note that we will actually sort in two ways in this method:
511
+ #
512
+ # - First, by priority, which can have values from 1 up to 5
513
+ # - Second, by the amount of ECTS points. Lectures that have
514
+ # more ECTS points will be displayed first.
515
+ #
516
+ # ========================================================================= #
517
+ def display_these_lectures_sorted_by_priority(
518
+ i, priority_to_use = [5,4,3,2,1]
519
+ )
520
+ if priority_to_use.is_a? Array
521
+ priority_to_use.each {|entry|
522
+ # =================================================================== #
523
+ # Call this method recursively.
524
+ # =================================================================== #
525
+ display_these_lectures_sorted_by_priority(i, entry)
526
+ }
527
+ else
528
+ if @do_report_the_findings
529
+ # =================================================================== #
530
+ # Show a little header, to notify the user which Priority-setting
531
+ # is currently shown.
532
+ # =================================================================== #
533
+ smiley_face = ''
534
+ if use_unicode_symbols? and Object.const_defined?(:Roebe)
535
+ smiley_face = lightseagreen(Roebe.smiley_face)
536
+ end
537
+ e sfancy("Priority #{priority_to_use.to_s}: #{smiley_face}")
538
+ e
539
+ end
540
+ matching_priority = i.select {|a, b| b[:priority] == priority_to_use }
541
+ counter = 0
542
+ sorted_by_n_ECTS_points_of_matching_priority = matching_priority.sort_by {|a, b|
543
+ b[:ects]
544
+ }.reverse
545
+ sorted_by_n_ECTS_points_of_matching_priority.each {|name, inner_hash| counter += 1
546
+ name = name.first if name.is_a? Array
547
+ n_ects_points = inner_hash[:ects]
548
+ university = inner_hash[:university]
549
+ lecture_type = inner_hash[:type]
550
+ summer_or_winter = inner_hash[:semester]
551
+ curricula_entries = obtain(:curricula_entries, inner_hash)
552
+ currently_participating_in_this_course = inner_hash[:currently_participating_in_this_course]
553
+ if currently_participating_in_this_course
554
+ # ================================================================= #
555
+ # Lectures that we are presently doing in the current semester
556
+ # will be shown in skyblue rather than slateblue.
557
+ # ================================================================= #
558
+ colourized_name_of_the_lecture = skyblue(name)
559
+ else
560
+ colourized_name_of_the_lecture = slateblue(name)
561
+ end
562
+ # =================================================================== #
563
+ # Colourize the ECTS points, in seagreen and lightseeagreen.
564
+ # Also show the lecture type and the university.
565
+ # =================================================================== #
566
+ colourized_n_ects_points = seagreen('(n ECTS: '+n_ects_points.to_s+', ')+
567
+ lightseagreen(lecture_type)+ # <- Display the lecture type here.
568
+ seagreen(', ')
569
+ unless summer_or_winter.nil?
570
+ colourized_summer_or_winter = mediumseagreen(summer_or_winter.to_s)
571
+ colourized_n_ects_points << colourized_summer_or_winter+
572
+ seagreen(', ')
573
+ end
574
+ colourized_n_ects_points << olivedrab(university)
575
+ colourized_n_ects_points << seagreen(', ')
576
+ colourized_n_ects_points << crimson(bachelor_or_master(curricula_entries))
577
+ # =================================================================== #
578
+ # Add the closing ')' next.
579
+ # =================================================================== #
580
+ colourized_n_ects_points << seagreen(')')
581
+ if @do_report_the_findings
582
+ e slategray(counter.to_s.rjust(2))+' '+
583
+ colourized_name_of_the_lecture+' '+
584
+ colourized_n_ects_points
585
+ end
586
+ }
587
+ e if @do_report_the_findings
588
+ end
589
+ end
590
+
591
+ # ========================================================================= #
592
+ # === bachelor_or_master
593
+ #
594
+ # This method will return a String, either "Bachelor" or "Master" or
595
+ # "Bachelor/Master".
596
+ # ========================================================================= #
597
+ def bachelor_or_master(i)
598
+ result = ''.dup
599
+ if is_a_bachelor_lecture?(i)
600
+ result << 'Bachelor'
601
+ end
602
+ if is_a_master_lecture?(i)
603
+ unless result.empty?
604
+ result << '/'
605
+ end
606
+ result << 'Master'
607
+ end
608
+ return result
609
+ end
610
+
611
+ # ========================================================================= #
612
+ # === available_curricula?
613
+ # ========================================================================= #
614
+ def available_curricula?
615
+ ARRAY_REGISTERED_CURRICULA
616
+ end
617
+
618
+ # ========================================================================= #
619
+ # === display_this_array_including_only_mandatory_continuous_assessment_lectures
620
+ #
621
+ # The input to this method will be an Array of mandatory continuous
622
+ # assessment lectures.
623
+ # ========================================================================= #
624
+ def display_this_array_including_only_mandatory_continuous_assessment_lectures(
625
+ array, be_verbose = be_verbose?
626
+ )
627
+ case be_verbose
628
+ when nil
629
+ be_verbose = be_verbose?
630
+ when :be_verbose
631
+ be_verbose = true
632
+ end
633
+ consider_displaying_the_title_of_the_curriculum
634
+ # ======================================================================= #
635
+ # Sometimes the input may be a String. In this case, split it up.
636
+ # ======================================================================= #
637
+ if array.is_a? String
638
+ array = return_entries_that_are_of_mandatory_continuous_assessment_type(
639
+ array.split(N)
640
+ )
641
+ end
642
+ # ======================================================================= #
643
+ # Next we can display the result.
644
+ # ======================================================================= #
645
+ sorted_array = array.map {|line|
646
+ line.delete('"')
647
+ }.sort
648
+ sorted_array.each {|line|
649
+ # ===================================================================== #
650
+ # Up to 05.11.2019 this code used to read in the content of a file,
651
+ # but since that day we will instead obtain the information from
652
+ # the file called "lecture_information.yml" instead. A useful
653
+ # side-effect of this is that this approach should be faster than
654
+ # using regexes.
655
+ # ===================================================================== #
656
+ line.strip!
657
+ if line.include? '#'
658
+ line = line[0 .. (line.index('#')-1)]
659
+ line.strip!
660
+ end
661
+ line.squeeze!(' ')
662
+ if @dataset_from_the_file_lecture_information[line].nil?
663
+ e 'A nil-value was found, for line '+steelblue(line)+'.'
664
+ e 'Exiting now.'
665
+ exit
666
+ end
667
+ n_ects_points = @dataset_from_the_file_lecture_information[line][:ects]
668
+ type_of_the_lecture = @dataset_from_the_file_lecture_information[line][:type]
669
+ # ===================================================================== #
670
+ # Instantly ensure that we have a valid amount of ECTS points.
671
+ # ===================================================================== #
672
+ if n_ects_points == 0.0
673
+ opnn; e swarn('We encountered a problem, a 0.0 ECTS lecture, at: ')+
674
+ lightgreen(line)
675
+ end
676
+ # ===================================================================== #
677
+ # Left-pad the lecture ID.
678
+ # ===================================================================== #
679
+ if line.include? ' '
680
+ splitted = line.split(' ')
681
+ splitted[0] = splitted[0].ljust(7)
682
+ name = splitted.join(' ')
683
+ end
684
+ @total_amount_of_mandatory_continuous_assessment_ECTS_points_in_this_curriculum += n_ects_points
685
+ if be_verbose and @do_report_the_findings
686
+ e ' '+orange(
687
+ name.ljust(93)
688
+ )+' '+mediumpurple(
689
+ n_ects_points.to_s.rjust(4)
690
+ )+' ECTS points '+
691
+ seagreen(type_of_the_lecture.to_s.rjust(4)) # <- Last part is type of the lecture.
692
+ end
693
+ }
694
+ e if be_verbose and @do_report_the_findings
695
+ do_calculate_the_percentage
696
+ # ======================================================================= #
697
+ # Next, report the total amount of ECTS and some more information.
698
+ # ======================================================================= #
699
+ if be_verbose and @do_report_the_findings
700
+ e 'Total amount of ECTS points: '+
701
+ crimson(@total_amount_of_mandatory_continuous_assessment_ECTS_points_in_this_curriculum.to_s)+
702
+ lightblue(' (== ')+seagreen(n_percent?.round(2).to_s+'%')+
703
+ lightblue(' of '+@total_amount_of_ECTS_points_in_the_curriculum.to_s+
704
+ ' ECTS points in total)')
705
+ end
706
+ end
707
+
708
+ # ========================================================================= #
709
+ # === do_calculate_the_percentage
710
+ #
711
+ # This method will calculate the percentage of ects points in
712
+ # courses with mandatory-attendance.
713
+ # ========================================================================= #
714
+ def do_calculate_the_percentage(
715
+ n_ects_in_mandatory_courses = @total_amount_of_mandatory_continuous_assessment_ECTS_points_in_this_curriculum,
716
+ n_total_ects_points_in_the_curriculum = @total_amount_of_ECTS_points_in_the_curriculum
717
+ )
718
+ n_percent = (
719
+ n_ects_in_mandatory_courses.to_f * 100
720
+ ) / n_total_ects_points_in_the_curriculum
721
+ # ======================================================================= #
722
+ # Note that this method will also set the percentage.
723
+ # ======================================================================= #
724
+ set_percentage(n_percent) # Set the percentage here as well.
725
+ end
726
+
727
+ # ========================================================================= #
728
+ # === show_all_available_curricula
729
+ #
730
+ # This is a powerhorse method - it will simply show all curricula and
731
+ # the respective "prüfungsimmanente Lehrveranstaltungen" in these
732
+ # curricula.
733
+ #
734
+ # Invocation example:
735
+ #
736
+ # mandatory --all_curricula
737
+ #
738
+ # ========================================================================= #
739
+ def show_all_available_curricula
740
+ do_not_be_verbose
741
+ _ = available_curricula?
742
+ _.each_with_index {|curriculum, index| index += 1
743
+ reset_this_instance
744
+ set_input(curriculum)
745
+ set_title(curriculum.to_sym)
746
+ try_to_find_this_curriculum(curriculum, index) { :be_verbose }
747
+ }
748
+ end
749
+
750
+ # ========================================================================= #
751
+ # === do_not_report_any_findings
752
+ # ========================================================================= #
753
+ def do_not_report_any_findings
754
+ @do_report_the_findings = false
755
+ end; alias do_not_report_anything do_not_report_any_findings # === do_not_report_anything
756
+
757
+ # ========================================================================= #
758
+ # === percentage?
759
+ # ========================================================================= #
760
+ def percentage?
761
+ @percentage
762
+ end; alias n_percent? percentage? # === n_percent?
763
+
764
+ # ========================================================================= #
765
+ # === consider_displaying_the_title_of_the_curriculum
766
+ # ========================================================================= #
767
+ def consider_displaying_the_title_of_the_curriculum
768
+ if @show_the_title_of_the_curriculum
769
+ if @do_report_the_findings
770
+ _ = title?
771
+ if _
772
+ e sfancy(_)
773
+ e
774
+ end if be_verbose?
775
+ end
776
+ end
777
+ end
778
+
779
+ # ========================================================================= #
780
+ # === do_assume_180_ects_points
781
+ # ========================================================================= #
782
+ def do_assume_180_ects_points
783
+ @total_amount_of_ECTS_points_in_the_curriculum = 180
784
+ end
785
+
786
+ # ========================================================================= #
787
+ # === do_assume_300_ects_points
788
+ # ========================================================================= #
789
+ def do_assume_300_ects_points
790
+ @total_amount_of_ECTS_points_in_the_curriculum = 300
791
+ end; alias do_assume_300_points do_assume_300_ects_points # === do_assume_300_points
792
+
793
+ # ========================================================================= #
794
+ # === do_assume_120_ects_points
795
+ # ========================================================================= #
796
+ def do_assume_120_ects_points
797
+ @total_amount_of_ECTS_points_in_the_curriculum = 120
798
+ end
799
+
800
+ # ========================================================================= #
801
+ # === n_ects_points
802
+ #
803
+ # This method can be used to directly set the amount of
804
+ # ECTS points in the given curriculum.
805
+ # ========================================================================= #
806
+ def n_ects_points(i = 120)
807
+ @total_amount_of_ECTS_points_in_the_curriculum = i.to_i
808
+ end
809
+
810
+ # ========================================================================= #
811
+ # === set_original_commandline
812
+ # ========================================================================= #
813
+ def set_original_commandline(i)
814
+ @original_commandline = [i].flatten.compact
815
+ end
816
+
817
+ # ========================================================================= #
818
+ # === do_show_all_passed_mandatory_continuous_assessments_from_this_year
819
+ #
820
+ # The input argument denotes the year. If the exam was passed in that
821
+ # year, then it will be shown.
822
+ #
823
+ # Invocation example:
824
+ # mandatory --2017
825
+ # ========================================================================= #
826
+ def do_show_all_passed_mandatory_continuous_assessments_from_this_year(the_year)
827
+ obtain_default_dataset
828
+ @result = @dataset.select {|line|
829
+ splitted = line.split('|').map(&:strip)
830
+ year = splitted.first.strip.split('.').last
831
+ lecture_type = splitted[6] # <- This is the right entry.
832
+ ARRAY_LECTURE_TYPES_THAT_ARE_MANDATORY_CONTINUOUS_ASSESSMENT.include?(lecture_type) &&
833
+ (the_year == year) # Make the year-check here.
834
+ }
835
+ report_result # Report it as we assigned the result above.
836
+ end
837
+
838
+ # ========================================================================= #
839
+ # === location_of (location_of tag)
840
+ #
841
+ # Return the location of the curriculum locally, based on symbol
842
+ # "shortcuts" such as :bachelor_vektoren.
843
+ # ========================================================================= #
844
+ def location_of(
845
+ i = :bachelor_vektoren,
846
+ also_assign_new_title = true
847
+ )
848
+ case i # case tag
849
+ # ======================================================================= #
850
+ # The Bachelorcurriculum "Biologische Informatik"
851
+ # ======================================================================= #
852
+ when :bachelor_biologische_informatik,
853
+ :indi3
854
+ set_title(i) if also_assign_new_title
855
+ i = return_file_for_this_curriculum(i)
856
+ # ======================================================================= #
857
+ # The Bachelorcurriculum "Bachelorcurriculum (Bio)Informatik und
858
+ # molekulare Biotechnologie, unter
859
+ # Berücksichtigung medizinisch-immunologischer
860
+ # Aspekte"
861
+ # ======================================================================= #
862
+ when :bachelor_bioinformatik_und_molekulare_biotechnologie
863
+ set_title(i) if also_assign_new_title
864
+ i = return_file_for_this_curriculum(i)
865
+ # ======================================================================= #
866
+ # The Bachelorcurriculum "Ernährungswissenschaften" at the Uni-Vienna.
867
+ # ======================================================================= #
868
+ when :bachelor_nutrition_science
869
+ set_title(i) if also_assign_new_title
870
+ i = return_file_for_this_curriculum(i)
871
+ # ======================================================================= #
872
+ # This is the general dummy curriculum. It can be used to quickly
873
+ # test a new curriculum quickly.
874
+ # ======================================================================= #
875
+ when :bachelor_dummy_curriculum
876
+ set_title(i) if also_assign_new_title
877
+ i = return_file_for_this_curriculum(i)
878
+ # ======================================================================= #
879
+ # The Bachelorcurriculum "Molekularbiologie" at the Uni-Graz.
880
+ # ======================================================================= #
881
+ when :bachelor_molekularbiologie,
882
+ :bachelor_molekularbiologie_curriculum,
883
+ :bachelor_molekularbiologie_graz
884
+ set_title(i) if also_assign_new_title
885
+ i = return_file_for_this_curriculum(i)
886
+ # ======================================================================= #
887
+ # The Bachelorcurriculum "Pharmazie" at the University of Vienna.
888
+ # ======================================================================= #
889
+ when :bachelor_pharmazie
890
+ set_title(i) if also_assign_new_title
891
+ i = return_file_for_this_curriculum(i)
892
+ # ======================================================================= #
893
+ # The Mastercurriculum "Pharmazie" at the University of Vienna.
894
+ # ======================================================================= #
895
+ when :master_pharmazie
896
+ set_title(i) if also_assign_new_title
897
+ i = return_file_for_this_curriculum(i)
898
+ # ======================================================================= #
899
+ # The bachelor curriculum chemistry at the University of Vienna.
900
+ # ======================================================================= #
901
+ when :bachelor_chemistry, # mandatory --bachelor_chemistry
902
+ :bachelor_chemie
903
+ set_title(i) if also_assign_new_title
904
+ i = return_file_for_this_curriculum(i)
905
+ # ======================================================================= #
906
+ # The bachelor-curriculum Technische Chemie
907
+ # ======================================================================= #
908
+ when :bachelor_technische_chemie
909
+ set_title(i) if also_assign_new_title
910
+ i = return_file_for_this_curriculum(i)
911
+ # ======================================================================= #
912
+ # The individual bachelor mikrobiologie curriculum
913
+ # ======================================================================= #
914
+ when :bachelor_mikrobiologie
915
+ set_title(i) if also_assign_new_title
916
+ i = return_file_for_this_curriculum(i)
917
+ # ======================================================================= #
918
+ # The individual master vector curriculum at the University of Vienna.
919
+ # ======================================================================= #
920
+ when :master_vektoren
921
+ set_title(i) if also_assign_new_title
922
+ i = return_file_for_this_curriculum(i)
923
+ # ======================================================================= #
924
+ # The master genetik und entwicklungsbiologie.
925
+ # ======================================================================= #
926
+ when :master_genetik_und_entwicklungsbiologie
927
+ set_title(i) if also_assign_new_title
928
+ i = return_file_for_this_curriculum(i)
929
+ # ======================================================================= #
930
+ # The master biotechnology curriculum at the TU Vienna.
931
+ # ======================================================================= #
932
+ when :master_tuvienna_biotechnology,
933
+ :master_tu_vienna_biotechnology
934
+ set_title(i) if also_assign_new_title
935
+ i = return_file_for_this_curriculum(i)
936
+ # ======================================================================= #
937
+ # This is the bachelorcurriculum at the TU Vienna, Medizinische Informatik.
938
+ # ======================================================================= #
939
+ when :bachelor_medizinische_informatik
940
+ set_title(i) if also_assign_new_title
941
+ i = return_file_for_this_curriculum(i)
942
+ # ======================================================================= #
943
+ # This is the bachelor-curriculum molbio at the University of Vienna.
944
+ # ======================================================================= #
945
+ when :bachelor_molekulare_biologie,
946
+ :bachelor_molbio
947
+ set_title(i) if also_assign_new_title
948
+ i = return_file_for_this_curriculum(i)
949
+ # ======================================================================= #
950
+ # This is the BOKU Bachelor Agrarwissenschaften curriculum.
951
+ # ======================================================================= #
952
+ when :bachelor_agrarwissenschaften
953
+ set_title(i) if also_assign_new_title
954
+ i = return_file_for_this_curriculum(i)
955
+ # ======================================================================= #
956
+ # The individual bachelor vector curriculum at the University of Vienna.
957
+ # ======================================================================= #
958
+ when :bachelor_vektoren
959
+ set_title(i) if also_assign_new_title
960
+ i = return_file_for_this_curriculum(i)
961
+ # ======================================================================= #
962
+ # The bachelor LMBT curriculum at the BOKU Vienna.
963
+ # ======================================================================= #
964
+ when :bachelor_lmbt,
965
+ :lmbt
966
+ set_title(i) if also_assign_new_title
967
+ i = return_file_for_this_curriculum(i)
968
+ # ======================================================================= #
969
+ # === :master_lmbt
970
+ # ======================================================================= #
971
+ when :master_lmbt
972
+ set_title(i) if also_assign_new_title
973
+ # ======================================================================= #
974
+ # The master Immunbiology at the University of Vienna.
975
+ # ======================================================================= #
976
+ when :master_immuno
977
+ set_title(i) if also_assign_new_title
978
+ i = return_file_for_this_curriculum(i)
979
+ # ======================================================================= #
980
+ # :master_molbio
981
+ # ======================================================================= #
982
+ when :master_molbio
983
+ set_title(i) if also_assign_new_title
984
+ i = FILE_MASTER_MOLBIO
985
+ # ======================================================================= #
986
+ # :bachelor_biologie_basisblock
987
+ # ======================================================================= #
988
+ when :bachelor_biologie_basisblock
989
+ set_title(i) if also_assign_new_title
990
+ i = FILE_BACHELOR_BIOLOGIE_BASISBLOCK
991
+ # ======================================================================= #
992
+ # :bachelor_genetik
993
+ # ======================================================================= #
994
+ when :bachelor_genetik
995
+ set_title(i) if also_assign_new_title
996
+ i = FILE_BACHELOR_GENETIK
997
+ # ======================================================================= #
998
+ # :bachelor_ernährungswissenschaften
999
+ # ======================================================================= #
1000
+ when :bachelor_ernährungswissenschaften
1001
+ set_title(i) if also_assign_new_title
1002
+ i = FILE_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN
1003
+ end
1004
+ return i
1005
+ end
1006
+
1007
+ # ========================================================================= #
1008
+ # === readlines
1009
+ #
1010
+ # Just a shorter method towards File.readlines().
1011
+ # ========================================================================= #
1012
+ def readlines(i)
1013
+ result = []
1014
+ if i.is_a? Symbol
1015
+ i = return_file_for_this_curriculum(i)
1016
+ end
1017
+ unless i.is_a? Array
1018
+ i = [i]
1019
+ end
1020
+ i.each {|entry|
1021
+ if File.exist? entry.to_s
1022
+ result << File.readlines(entry)
1023
+ else
1024
+ opnn; e 'No file exists at `'+
1025
+ sfile(entry.to_s)+
1026
+ '`. (in the method readlines())' # This line shall always be output.
1027
+ exit
1028
+ end
1029
+ }
1030
+ result.flatten!
1031
+ return result
1032
+ end
1033
+
1034
+ # ========================================================================= #
1035
+ # === do_show_all_passed_mandatory_continuous_assessments
1036
+ #
1037
+ # This method will show all "prüfungsimmanente" Lehrveranstaltungen.
1038
+ # ========================================================================= #
1039
+ def do_show_all_passed_mandatory_continuous_assessments
1040
+ obtain_default_dataset
1041
+ # ======================================================================= #
1042
+ # Next, grab all entries that are "prüfungsimmanent". These are those
1043
+ # types that are part of the array-constant, so, UE, PS, SE, LU and
1044
+ # so forth. These all have mandatory continuous assessment parts.
1045
+ # ======================================================================= #
1046
+ @result = @dataset.select {|line|
1047
+ splitted = line.split('|').map(&:strip)
1048
+ lecture_type = splitted[6] # <- This is the right entry.
1049
+ is_included = ARRAY_LECTURE_TYPES_THAT_ARE_MANDATORY_CONTINUOUS_ASSESSMENT.include? lecture_type
1050
+ is_included
1051
+ }
1052
+ report_result # Report it as we assigned the result above.
1053
+ end
1054
+
1055
+ # ========================================================================= #
1056
+ # === padded_display_this_array_including_only_mandatory_continuous_assessment_lectures
1057
+ # ========================================================================= #
1058
+ def padded_display_this_array_including_only_mandatory_continuous_assessment_lectures(
1059
+ array, be_verbose_in_the_subsequent_method_call = nil
1060
+ )
1061
+ e if be_verbose? and @do_report_the_findings
1062
+ display_this_array_including_only_mandatory_continuous_assessment_lectures(
1063
+ array, be_verbose_in_the_subsequent_method_call
1064
+ )
1065
+ e if be_verbose? and @do_report_the_findings
1066
+ end
1067
+
1068
+ # ========================================================================= #
1069
+ # === total_amount_of_mandatory_continuous_assessment_ects_points_in_this_curriculum?
1070
+ # ========================================================================= #
1071
+ def total_amount_of_mandatory_continuous_assessment_ects_points_in_this_curriculum?
1072
+ @total_amount_of_mandatory_continuous_assessment_ECTS_points_in_this_curriculum
1073
+ end; alias n_mandatory_ects_points_in_this_curriculum? total_amount_of_mandatory_continuous_assessment_ects_points_in_this_curriculum? # === n_mandatory_ects_points_in_this_curriculum?
1074
+ alias n_mandatory_ects_points_in_this_curriculum total_amount_of_mandatory_continuous_assessment_ects_points_in_this_curriculum? # === n_mandatory_ects_points_in_this_curriculum?
1075
+
1076
+ # ========================================================================= #
1077
+ # === title_of_the_curriculum?
1078
+ # ========================================================================= #
1079
+ def title_of_the_curriculum?
1080
+ @title_of_the_curriculum
1081
+ end; alias title? title_of_the_curriculum? # === title?
1082
+ alias name_of_the_curriculum? title_of_the_curriculum? # === name_of_the_curriculum?
1083
+
1084
+ # ========================================================================= #
1085
+ # === Studium::Exams::MandatoryContinuousAssessment[]
1086
+ # ========================================================================= #
1087
+ def self.[](i = '')
1088
+ new(i)
1089
+ end
1090
+
1091
+ end; end
1092
+
1093
+ # =========================================================================== #
1094
+ # === Studium.percentage_mandatory_continues_assessment
1095
+ #
1096
+ # This method will simply return the percentage of the mandatory,
1097
+ # continuous assessment practical courses, as a Float.
1098
+ #
1099
+ # In german: "Diese Methode gibt einem den prozentualen Anteil
1100
+ # an prüfungsimmanenten Lehrveranstaltungen aus."
1101
+ #
1102
+ # Invocation examples:
1103
+ #
1104
+ # percentage = Studium.percentage_mandatory_continues_assessment('bachelor-genetic') # => 36.666666666666664
1105
+ # percentage = Studium.percentage_mandatory_continues_assessment('bachelor-vektor') # => 37.22222222222222
1106
+ #
1107
+ # =========================================================================== #
1108
+ def self.percentage_mandatory_continues_assessment(in_this_curriculum)
1109
+ _ = Studium::Exams::MandatoryContinuousAssessment.new(in_this_curriculum, :do_not_run_yet)
1110
+ _.be_quiet
1111
+ _.run
1112
+ _.percentage?
1113
+ end
1114
+
1115
+ end