studium 0.9.383

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