studium 0.13.1

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

Potentially problematic release.


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

Files changed (871) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +2785 -0
  3. data/bin/ask_exam_question +7 -0
  4. data/bin/check_description_of_these_lectures +7 -0
  5. data/bin/curriculum_module_displayer +7 -0
  6. data/bin/cycle +7 -0
  7. data/bin/d10 +7 -0
  8. data/bin/d100 +7 -0
  9. data/bin/d15 +7 -0
  10. data/bin/d20 +7 -0
  11. data/bin/d25 +7 -0
  12. data/bin/d3 +7 -0
  13. data/bin/d30 +7 -0
  14. data/bin/d5 +7 -0
  15. data/bin/determine_curricula +7 -0
  16. data/bin/display_lecture_url +7 -0
  17. data/bin/exam_registration_at +7 -0
  18. data/bin/exam_statistics +7 -0
  19. data/bin/exams_per_month +9 -0
  20. data/bin/finished_exams_at_this_university +7 -0
  21. data/bin/flashcards +7 -0
  22. data/bin/from_curriculum_id_to_university +9 -0
  23. data/bin/location_to_this_exam_topic.rb +7 -0
  24. data/bin/mandatory_continuous_assessment +7 -0
  25. data/bin/mandatory_upcoming_courses +7 -0
  26. data/bin/n_ECTS +7 -0
  27. data/bin/n_exam_questions_already_answered +16 -0
  28. data/bin/nquestions +7 -0
  29. data/bin/nsolved +7 -0
  30. data/bin/open_last_exam_question_asked_file +7 -0
  31. data/bin/passed_exams +7 -0
  32. data/bin/passed_pr/303/274fungsimmanente_courses +7 -0
  33. data/bin/pdf_for +7 -0
  34. data/bin/random_exam_topic +7 -0
  35. data/bin/report_solved_topics +7 -0
  36. data/bin/return_n_ects_from_this_file +7 -0
  37. data/bin/search_for_n_ects +7 -0
  38. data/bin/show_lectures_on_the_commandline +7 -0
  39. data/bin/show_themes +7 -0
  40. data/bin/solved +9 -0
  41. data/bin/solved_ects +7 -0
  42. data/bin/studienkennzahl +7 -0
  43. data/bin/studium +7 -0
  44. data/bin/studium_skeleton +7 -0
  45. data/bin/ufind +7 -0
  46. data/bin/upcoming_exams +7 -0
  47. data/bin/week_parser +7 -0
  48. data/doc/ECTS_CONSIDERATIONS.md +81 -0
  49. data/doc/HOW_TO_DETERMINE_WHICH_PART_IS_THE_QUESTION_AND_WHICH_PART_IS_THE_ANSWER.md +44 -0
  50. data/doc/README.gen +2742 -0
  51. data/doc/SQL_database_specification.md +46 -0
  52. data/doc/deprecated_components.md +24 -0
  53. data/doc/documentation_for_the_file_lecture_information.md +311 -0
  54. data/doc/elegant_colours.md +21 -0
  55. data/doc/todo/TODO_FOR_STUDIUM_GEM.md +112 -0
  56. data/doc/todo/TODO_FOR_THE_GRAPHICAL_PARTS_OF_THE_STUDIUM_GEM_INCLUDING_WWW_RELATED_ASPECTS.md +35 -0
  57. data/img/STUDIES.png +0 -0
  58. data/lib/studium/autoinclude.rb +7 -0
  59. data/lib/studium/base/base.rb +2710 -0
  60. data/lib/studium/base/prototype.rb +543 -0
  61. data/lib/studium/c/README.md +2 -0
  62. data/lib/studium/c/a.out +0 -0
  63. data/lib/studium/c/obtain_random_entry.c +11 -0
  64. data/lib/studium/check_and_sanitize/README.md +11 -0
  65. data/lib/studium/check_and_sanitize/check_curriculum_for_correct_separation_of_bachelor_and_master.rb +141 -0
  66. data/lib/studium/check_and_sanitize/check_for_all_exam_topics_being_registered.rb +110 -0
  67. data/lib/studium/check_and_sanitize/check_for_correct_themes_of_each_course.rb +90 -0
  68. data/lib/studium/check_and_sanitize/check_for_existing_description_of_this_lecture.rb +189 -0
  69. data/lib/studium/check_and_sanitize/check_the_lecture_information_file.rb +163 -0
  70. data/lib/studium/check_and_sanitize/find_duplicate_lectures.rb +115 -0
  71. data/lib/studium/check_and_sanitize/missing_priority_entry.rb +44 -0
  72. data/lib/studium/check_and_sanitize/sanitize_this_string_containing_the_lva_dates.rb +79 -0
  73. data/lib/studium/colours/colours.rb +549 -0
  74. data/lib/studium/colours/sfancy.rb +46 -0
  75. data/lib/studium/colours/sfile.rb +35 -0
  76. data/lib/studium/colours/simp.rb +40 -0
  77. data/lib/studium/colours/use_colours.rb +39 -0
  78. data/lib/studium/colours/use_this_colour_for_exam_questions_and_exam_answers.rb +80 -0
  79. data/lib/studium/commandline/commandline.rb +932 -0
  80. data/lib/studium/commandline/menu.rb +903 -0
  81. data/lib/studium/constants/colours.rb +14 -0
  82. data/lib/studium/constants/constants.rb +2142 -0
  83. data/lib/studium/constants/image_constants.rb +217 -0
  84. data/lib/studium/constants/web_constants.rb +25 -0
  85. data/lib/studium/css/project.css +267 -0
  86. data/lib/studium/curricula/curriculum.rb +210 -0
  87. data/lib/studium/curricula/curriculum_as_string.rb +280 -0
  88. data/lib/studium/curricula/curriculum_module_displayer/constants.rb +33 -0
  89. data/lib/studium/curricula/curriculum_module_displayer/curriculum_module_displayer.rb +417 -0
  90. data/lib/studium/curricula/curriculum_module_displayer/initialize.rb +25 -0
  91. data/lib/studium/curricula/curriculum_module_displayer/menu.rb +45 -0
  92. data/lib/studium/curricula/curriculum_module_displayer/reset.rb +74 -0
  93. data/lib/studium/curricula/curriculum_module_displayer/run.rb +20 -0
  94. data/lib/studium/curricula/curriculum_module_displayer/set_use_this_curriculum.rb +93 -0
  95. data/lib/studium/curricula/curriculum_module_displayer/show_and_report.rb +190 -0
  96. data/lib/studium/curricula/determine_curricula/constants.rb +11 -0
  97. data/lib/studium/curricula/determine_curricula/determine_curricula.rb +36 -0
  98. data/lib/studium/curricula/determine_curricula/help.rb +39 -0
  99. data/lib/studium/curricula/determine_curricula/initialize.rb +48 -0
  100. data/lib/studium/curricula/determine_curricula/menu.rb +151 -0
  101. data/lib/studium/curricula/determine_curricula/misc.rb +403 -0
  102. data/lib/studium/curricula/determine_curricula/report.rb +143 -0
  103. data/lib/studium/curricula/determine_curricula/reset.rb +59 -0
  104. data/lib/studium/curricula/determine_curricula/run.rb +19 -0
  105. data/lib/studium/curricula/determine_elective_courses_in_this_curriculum.rb +112 -0
  106. data/lib/studium/curricula/display_bachelor_curricula.rb +90 -0
  107. data/lib/studium/curricula/mitteilungsbl/303/244tter/mitteilungsbl/303/244tter.rb +324 -0
  108. data/lib/studium/curricula/modules/display_on_the_commandline.rb +319 -0
  109. data/lib/studium/curricula/modules/return_n_ects_in_this_module.rb +75 -0
  110. data/lib/studium/curricula/n_percent_solved_in_this_curriculum.rb +75 -0
  111. data/lib/studium/curricula/prepare_individual_curriculum.rb +304 -0
  112. data/lib/studium/curricula/random_curriculum_creator/random_curriculum_creator.rb +163 -0
  113. data/lib/studium/curricula/show_lectures_of_this_curriculum.rb +114 -0
  114. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/constants.rb +11 -0
  115. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/initialize.rb +27 -0
  116. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/menu.rb +35 -0
  117. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/misc.rb +264 -0
  118. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/report.rb +163 -0
  119. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/reset.rb +64 -0
  120. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/show_lectures_of_this_curriculum_id.rb +38 -0
  121. data/lib/studium/curricula/show_solved_percentage_among_the_registered_curricula.rb +87 -0
  122. data/lib/studium/ects/boku_ects_splitter.rb +128 -0
  123. data/lib/studium/ects/ects_per_university.rb +179 -0
  124. data/lib/studium/ects/ects_scanner.rb +141 -0
  125. data/lib/studium/ects/ects_to_university_parser.rb +142 -0
  126. data/lib/studium/ects/last_entry_is_curriculum.rb +150 -0
  127. data/lib/studium/ects/n_ects_in_these_lectures.rb +196 -0
  128. data/lib/studium/ects/n_ects_points_in_mandatory_presence_courses.rb +50 -0
  129. data/lib/studium/ects/return_n_ects_from_this_file.rb +59 -0
  130. data/lib/studium/ects/return_n_ects_from_this_url.rb +196 -0
  131. data/lib/studium/ects/search_for_n_ects.rb +614 -0
  132. data/lib/studium/ects/show_completed_ects_in_all_curricula.rb +191 -0
  133. data/lib/studium/ects/show_passed_credits_per_curriculum.rb +276 -0
  134. data/lib/studium/ects/simple_total_ects_points.rb +135 -0
  135. data/lib/studium/ects/solved_ects/constants.rb +19 -0
  136. data/lib/studium/ects/solved_ects/reset.rb +51 -0
  137. data/lib/studium/ects/solved_ects/solved_ects.rb +325 -0
  138. data/lib/studium/ects/solved_ects_per_university/reset.rb +25 -0
  139. data/lib/studium/ects/solved_ects_per_university/solved_ects_per_university.rb +106 -0
  140. data/lib/studium/ects/still_missing.rb +129 -0
  141. data/lib/studium/ects/sum_of_ects.rb +144 -0
  142. data/lib/studium/encoding/encoding.rb +108 -0
  143. data/lib/studium/exam_topics/RNAi_siRNA_and_miRNA +86 -0
  144. data/lib/studium/exam_topics/abfall_als_ressource +86 -0
  145. data/lib/studium/exam_topics/advanced_biochemistry +781 -0
  146. data/lib/studium/exam_topics/advanced_biotechnology +214 -0
  147. data/lib/studium/exam_topics/advanced_cellbiology +27 -0
  148. data/lib/studium/exam_topics/advanced_chemistry +504 -0
  149. data/lib/studium/exam_topics/advanced_microbiology +43 -0
  150. data/lib/studium/exam_topics/advanced_topics_in_plant_sciences +85 -0
  151. data/lib/studium/exam_topics/advanced_virology +218 -0
  152. data/lib/studium/exam_topics/ageing +114 -0
  153. data/lib/studium/exam_topics/agrar_ecology +63 -0
  154. data/lib/studium/exam_topics/agrarmarkt +71 -0
  155. data/lib/studium/exam_topics/agrarphysik +35 -0
  156. data/lib/studium/exam_topics/alcohols +29 -0
  157. data/lib/studium/exam_topics/algorithms +52 -0
  158. data/lib/studium/exam_topics/allergie +75 -0
  159. data/lib/studium/exam_topics/allgemeine_genetik +1006 -0
  160. data/lib/studium/exam_topics/allgemeine_mikrobiologie +946 -0
  161. data/lib/studium/exam_topics/aminoacids +438 -0
  162. data/lib/studium/exam_topics/analytische_chemie_1 +132 -0
  163. data/lib/studium/exam_topics/analytische_chemie_2 +31 -0
  164. data/lib/studium/exam_topics/anatomie +290 -0
  165. data/lib/studium/exam_topics/anorganische_chemie +311 -0
  166. data/lib/studium/exam_topics/anthropologie +116 -0
  167. data/lib/studium/exam_topics/antibodies_and_antigens +764 -0
  168. data/lib/studium/exam_topics/apoptosis +35 -0
  169. data/lib/studium/exam_topics/archaea +60 -0
  170. data/lib/studium/exam_topics/architecture +8 -0
  171. data/lib/studium/exam_topics/artificial_intelligence +81 -0
  172. data/lib/studium/exam_topics/atomemissionsspektrometrie +6 -0
  173. data/lib/studium/exam_topics/audio +11 -0
  174. data/lib/studium/exam_topics/bacteriophages +240 -0
  175. data/lib/studium/exam_topics/basic_biochemistry +1002 -0
  176. data/lib/studium/exam_topics/basic_biotechnology +1001 -0
  177. data/lib/studium/exam_topics/basic_chemistry +1007 -0
  178. data/lib/studium/exam_topics/basic_virology +1008 -0
  179. data/lib/studium/exam_topics/bauwesen +6 -0
  180. data/lib/studium/exam_topics/betriebssysteme +126 -0
  181. data/lib/studium/exam_topics/betriebswirtschaftslehre +29 -0
  182. data/lib/studium/exam_topics/bioanalytik_und_biosensoren +382 -0
  183. data/lib/studium/exam_topics/biochips +78 -0
  184. data/lib/studium/exam_topics/bioelektrochemie +57 -0
  185. data/lib/studium/exam_topics/biofilms +22 -0
  186. data/lib/studium/exam_topics/bioinformatics +503 -0
  187. data/lib/studium/exam_topics/biological_therapeutics +153 -0
  188. data/lib/studium/exam_topics/biologie +137 -0
  189. data/lib/studium/exam_topics/biomarkers +106 -0
  190. data/lib/studium/exam_topics/biomaterials +89 -0
  191. data/lib/studium/exam_topics/biomembranes +6 -0
  192. data/lib/studium/exam_topics/bionik +65 -0
  193. data/lib/studium/exam_topics/biophysik +34 -0
  194. data/lib/studium/exam_topics/biopolymers +10 -0
  195. data/lib/studium/exam_topics/bioprozesstechnik +149 -0
  196. data/lib/studium/exam_topics/bioressourcenmanagement +78 -0
  197. data/lib/studium/exam_topics/bodenkunde +373 -0
  198. data/lib/studium/exam_topics/bodenmikrobiologie +40 -0
  199. data/lib/studium/exam_topics/cancerbiology +442 -0
  200. data/lib/studium/exam_topics/cell_cultures +155 -0
  201. data/lib/studium/exam_topics/cellbiology +995 -0
  202. data/lib/studium/exam_topics/cellular_transport_and_protein_secretion +27 -0
  203. data/lib/studium/exam_topics/cellulose +6 -0
  204. data/lib/studium/exam_topics/chemische_technologie_anorganischer_stoffe +209 -0
  205. data/lib/studium/exam_topics/chemische_technologie_organischer_stoffe +25 -0
  206. data/lib/studium/exam_topics/chemisches_labor +60 -0
  207. data/lib/studium/exam_topics/chemotaxis_and_motility_in_prokaryotes +87 -0
  208. data/lib/studium/exam_topics/citric_acid_cycle +80 -0
  209. data/lib/studium/exam_topics/clinical_microbiology +492 -0
  210. data/lib/studium/exam_topics/computer_graphics +5 -0
  211. data/lib/studium/exam_topics/computer_science +280 -0
  212. data/lib/studium/exam_topics/crispr +28 -0
  213. data/lib/studium/exam_topics/cyanobacteria +42 -0
  214. data/lib/studium/exam_topics/cytogenetics_and_chromosome_biology +551 -0
  215. data/lib/studium/exam_topics/cytokines +5 -0
  216. data/lib/studium/exam_topics/databases_and_sql +106 -0
  217. data/lib/studium/exam_topics/dna_mutation_and_dna_repair +35 -0
  218. data/lib/studium/exam_topics/dna_replication +56 -0
  219. data/lib/studium/exam_topics/ecogenetics +26 -0
  220. data/lib/studium/exam_topics/ecological_agriculture +12 -0
  221. data/lib/studium/exam_topics/ecology +314 -0
  222. data/lib/studium/exam_topics/economy +211 -0
  223. data/lib/studium/exam_topics/elektronenmikroskopie +354 -0
  224. data/lib/studium/exam_topics/elektrophorese +89 -0
  225. data/lib/studium/exam_topics/elektrotechnik_und_elektrizit/303/244t +41 -0
  226. data/lib/studium/exam_topics/elisa +54 -0
  227. data/lib/studium/exam_topics/embryologie_und_entwicklung +547 -0
  228. data/lib/studium/exam_topics/endospores_and_spores +104 -0
  229. data/lib/studium/exam_topics/enzymes_and_cofactors +345 -0
  230. data/lib/studium/exam_topics/epigenetik +179 -0
  231. data/lib/studium/exam_topics/ethik +138 -0
  232. data/lib/studium/exam_topics/evolution_and_evolutionary_genetics +328 -0
  233. data/lib/studium/exam_topics/excel +7 -0
  234. data/lib/studium/exam_topics/fish +19 -0
  235. data/lib/studium/exam_topics/fluorescence_microscopy +7 -0
  236. data/lib/studium/exam_topics/food_microbiology_and_food_biotechnology +71 -0
  237. data/lib/studium/exam_topics/forensik +11 -0
  238. data/lib/studium/exam_topics/forstwirtschaft +53 -0
  239. data/lib/studium/exam_topics/fortgeschrittene_genetik +511 -0
  240. data/lib/studium/exam_topics/fortgeschrittene_gentechnik +211 -0
  241. data/lib/studium/exam_topics/fortgeschrittene_physik +6 -0
  242. data/lib/studium/exam_topics/fungi +79 -0
  243. data/lib/studium/exam_topics/genetische_krankheiten +176 -0
  244. data/lib/studium/exam_topics/genexpression +1008 -0
  245. data/lib/studium/exam_topics/genomics_and_metagenomics +244 -0
  246. data/lib/studium/exam_topics/gentechnik_und_praktische_biochemie +901 -0
  247. data/lib/studium/exam_topics/geochemistry +67 -0
  248. data/lib/studium/exam_topics/geography +8 -0
  249. data/lib/studium/exam_topics/geologie_und_mineralogie +621 -0
  250. data/lib/studium/exam_topics/geometrie +47 -0
  251. data/lib/studium/exam_topics/geschichte +93 -0
  252. data/lib/studium/exam_topics/gluconeogenesis +59 -0
  253. data/lib/studium/exam_topics/glycogen +25 -0
  254. data/lib/studium/exam_topics/glycolysis +109 -0
  255. data/lib/studium/exam_topics/glykomik +100 -0
  256. data/lib/studium/exam_topics/glyoxylatzyklus +31 -0
  257. data/lib/studium/exam_topics/grassland_cultivation +32 -0
  258. data/lib/studium/exam_topics/hormone +134 -0
  259. data/lib/studium/exam_topics/html +7 -0
  260. data/lib/studium/exam_topics/human_ecology +8 -0
  261. data/lib/studium/exam_topics/hygiene +191 -0
  262. data/lib/studium/exam_topics/imaging_and_microscopy +241 -0
  263. data/lib/studium/exam_topics/immunanalytik +94 -0
  264. data/lib/studium/exam_topics/immunologie +982 -0
  265. data/lib/studium/exam_topics/informatik +97 -0
  266. data/lib/studium/exam_topics/innate_immunity +22 -0
  267. data/lib/studium/exam_topics/insekten +57 -0
  268. data/lib/studium/exam_topics/insulin_and_diabetes +57 -0
  269. data/lib/studium/exam_topics/java +502 -0
  270. data/lib/studium/exam_topics/javascript +12 -0
  271. data/lib/studium/exam_topics/klima +6 -0
  272. data/lib/studium/exam_topics/kryptographie +5 -0
  273. data/lib/studium/exam_topics/landtechnik +26 -0
  274. data/lib/studium/exam_topics/lebensmittel +208 -0
  275. data/lib/studium/exam_topics/lebensmitteltechnologie +16 -0
  276. data/lib/studium/exam_topics/linux +5 -0
  277. data/lib/studium/exam_topics/lipids +94 -0
  278. data/lib/studium/exam_topics/macroeconomics +40 -0
  279. data/lib/studium/exam_topics/mathematics +254 -0
  280. data/lib/studium/exam_topics/medizin_und_biomedizinische_technik +250 -0
  281. data/lib/studium/exam_topics/medizinische_chemie_und_pharmazie +398 -0
  282. data/lib/studium/exam_topics/messtechnik_und_regeltechnik +104 -0
  283. data/lib/studium/exam_topics/metabolismus +406 -0
  284. data/lib/studium/exam_topics/microbial_ecology +35 -0
  285. data/lib/studium/exam_topics/microcontrollers +11 -0
  286. data/lib/studium/exam_topics/mikrobielle_lebensgemeinschaften +33 -0
  287. data/lib/studium/exam_topics/mikrobielle_physiologie +172 -0
  288. data/lib/studium/exam_topics/mitochondria +32 -0
  289. data/lib/studium/exam_topics/mixed +278 -0
  290. data/lib/studium/exam_topics/molecular_biology_of_plants +242 -0
  291. data/lib/studium/exam_topics/molekulare_medizin +131 -0
  292. data/lib/studium/exam_topics/nanotechnologie +453 -0
  293. data/lib/studium/exam_topics/nature_conservation_and_biodiversity +166 -0
  294. data/lib/studium/exam_topics/naturstoffe +9 -0
  295. data/lib/studium/exam_topics/netzwerke +32 -0
  296. data/lib/studium/exam_topics/neurobiology +267 -0
  297. data/lib/studium/exam_topics/nucleotide_sequencing +32 -0
  298. data/lib/studium/exam_topics/nutztierethologie +11 -0
  299. data/lib/studium/exam_topics/object_oriented_modeling +14 -0
  300. data/lib/studium/exam_topics/obstbau +234 -0
  301. data/lib/studium/exam_topics/organische_chemie +1007 -0
  302. data/lib/studium/exam_topics/organische_chemie_2 +118 -0
  303. data/lib/studium/exam_topics/paleobiology +35 -0
  304. data/lib/studium/exam_topics/parasitic_diseases_and_molecular_infection_biology +335 -0
  305. data/lib/studium/exam_topics/patent_law +55 -0
  306. data/lib/studium/exam_topics/pathologie +717 -0
  307. data/lib/studium/exam_topics/pcr +144 -0
  308. data/lib/studium/exam_topics/pentosephosphatweg +41 -0
  309. data/lib/studium/exam_topics/peroxisomes_glycosomes_and_lysosomes +54 -0
  310. data/lib/studium/exam_topics/pflanzenanatomie +255 -0
  311. data/lib/studium/exam_topics/pflanzenbau +24 -0
  312. data/lib/studium/exam_topics/pflanzenschutz +35 -0
  313. data/lib/studium/exam_topics/pflanzenwissenschaften +1009 -0
  314. data/lib/studium/exam_topics/pharmaceutical_biotechnology +250 -0
  315. data/lib/studium/exam_topics/physik +433 -1
  316. data/lib/studium/exam_topics/physikalische_chemie +86 -0
  317. data/lib/studium/exam_topics/physiology_and_histology +506 -0
  318. data/lib/studium/exam_topics/phytochemie +33 -0
  319. data/lib/studium/exam_topics/plant_biotechnology +128 -0
  320. data/lib/studium/exam_topics/plant_breeding +64 -0
  321. data/lib/studium/exam_topics/plant_development +50 -0
  322. data/lib/studium/exam_topics/populationsgenetik +136 -0
  323. data/lib/studium/exam_topics/posttranslationale_modifikation_von_proteinen +191 -0
  324. data/lib/studium/exam_topics/projektmanagement +219 -0
  325. data/lib/studium/exam_topics/prokaryote_genetics +531 -0
  326. data/lib/studium/exam_topics/protein_engineering +8 -0
  327. data/lib/studium/exam_topics/proteolyse +33 -0
  328. data/lib/studium/exam_topics/proteomik +40 -0
  329. data/lib/studium/exam_topics/prozesstechnik +95 -0
  330. data/lib/studium/exam_topics/psychologie +13 -0
  331. data/lib/studium/exam_topics/python +353 -0
  332. data/lib/studium/exam_topics/quality_management +256 -0
  333. data/lib/studium/exam_topics/rechtsgrundlagen +115 -0
  334. data/lib/studium/exam_topics/research_topics_in_immunobiology +42 -0
  335. data/lib/studium/exam_topics/rna_and_dna +395 -0
  336. data/lib/studium/exam_topics/rna_seq +11 -0
  337. data/lib/studium/exam_topics/ruby +146 -0
  338. data/lib/studium/exam_topics/ruby_on_rails +63 -0
  339. data/lib/studium/exam_topics/scientific_writing_and_publishing +38 -0
  340. data/lib/studium/exam_topics/semisynthese_von_proteinen_und_nukleotiden +120 -0
  341. data/lib/studium/exam_topics/sexualbiologie +62 -0
  342. data/lib/studium/exam_topics/signal_transduction_and_laser_systems +167 -0
  343. data/lib/studium/exam_topics/splicing_exons_and_introns +63 -0
  344. data/lib/studium/exam_topics/statistik +233 -0
  345. data/lib/studium/exam_topics/stemcells +158 -0
  346. data/lib/studium/exam_topics/stickstofffixierung +75 -0
  347. data/lib/studium/exam_topics/structural_bioinformatics +54 -0
  348. data/lib/studium/exam_topics/strukturbiologie +380 -0
  349. data/lib/studium/exam_topics/system_biology_and_synthetic_biology +101 -0
  350. data/lib/studium/exam_topics/systematische_zoologie +433 -0
  351. data/lib/studium/exam_topics/technical_ecology +144 -0
  352. data/lib/studium/exam_topics/technische_chemie +202 -0
  353. data/lib/studium/exam_topics/technische_grundlagen_der_informatik +26 -0
  354. data/lib/studium/exam_topics/technische_mikrobiologie +393 -0
  355. data/lib/studium/exam_topics/technisches_zeichnen +5 -0
  356. data/lib/studium/exam_topics/the_bacterial_cell_wall +97 -0
  357. data/lib/studium/exam_topics/the_c_plus_plus_programming_language +489 -0
  358. data/lib/studium/exam_topics/the_c_programming_language +129 -0
  359. data/lib/studium/exam_topics/the_cellcycle +81 -0
  360. data/lib/studium/exam_topics/the_european_union +119 -0
  361. data/lib/studium/exam_topics/the_interferon_system +38 -0
  362. data/lib/studium/exam_topics/the_microbiome +163 -0
  363. data/lib/studium/exam_topics/the_universe +12 -0
  364. data/lib/studium/exam_topics/theoretische_chemie +5 -0
  365. data/lib/studium/exam_topics/theoretische_informatik +157 -0
  366. data/lib/studium/exam_topics/tierzucht +94 -0
  367. data/lib/studium/exam_topics/toxikologie +408 -0
  368. data/lib/studium/exam_topics/transcription +82 -0
  369. data/lib/studium/exam_topics/translation_ribosomes_and_translational_control +142 -0
  370. data/lib/studium/exam_topics/umweltbiotechnologie +63 -0
  371. data/lib/studium/exam_topics/umweltchemie +233 -0
  372. data/lib/studium/exam_topics/urbanism_and_traffic +19 -0
  373. data/lib/studium/exam_topics/urea_cycle +55 -0
  374. data/lib/studium/exam_topics/vaccines_and_vaccination +242 -0
  375. data/lib/studium/exam_topics/vectors_and_gene_therapy +240 -0
  376. data/lib/studium/exam_topics/verfahrenstechnik +32 -0
  377. data/lib/studium/exam_topics/veterinary_medicine +10 -0
  378. data/lib/studium/exam_topics/vitamine +24 -0
  379. data/lib/studium/exam_topics/wasserkunde +137 -0
  380. data/lib/studium/exam_topics/weinbau +59 -0
  381. data/lib/studium/exam_topics/wissenschaft +18 -0
  382. data/lib/studium/exam_topics/yeast +102 -0
  383. data/lib/studium/exam_topics/zoologie +330 -0
  384. data/lib/studium/exams/afterburn/afterburn.rb +257 -0
  385. data/lib/studium/exams/ask_exam_from_the_upcoming_exams_pool.rb +150 -0
  386. data/lib/studium/exams/ask_exam_topic_question.rb +112 -0
  387. data/lib/studium/exams/ask_question_from_alias.rb +141 -0
  388. data/lib/studium/exams/ask_question_from_any_of_the_still_missing_lectures.rb +131 -0
  389. data/lib/studium/exams/ask_question_from_grouped_themes.rb +141 -0
  390. data/lib/studium/exams/ask_question_from_last_topic.rb +91 -0
  391. data/lib/studium/exams/ask_random_question.rb +195 -0
  392. data/lib/studium/exams/autoinclude.rb +7 -0
  393. data/lib/studium/exams/csv/create_csv_passed_exams_file.rb +217 -0
  394. data/lib/studium/exams/cycle.rb +291 -0
  395. data/lib/studium/exams/dataset.rb +123 -0
  396. data/lib/studium/exams/designate_ten_random_exam_topics/designate_ten_random_exam_topics.rb +88 -0
  397. data/lib/studium/exams/exam/exam.rb +130 -0
  398. data/lib/studium/exams/exam_question/README.md +3 -0
  399. data/lib/studium/exams/exam_question/answer.rb +177 -0
  400. data/lib/studium/exams/exam_question/constants.rb +111 -0
  401. data/lib/studium/exams/exam_question/exam_question.rb +1135 -0
  402. data/lib/studium/exams/exam_question/menu.rb +333 -0
  403. data/lib/studium/exams/exam_question/misc.rb +895 -0
  404. data/lib/studium/exams/exam_question/question.rb +91 -0
  405. data/lib/studium/exams/exam_question/reset.rb +96 -0
  406. data/lib/studium/exams/exam_registration_at/constants.rb +49 -0
  407. data/lib/studium/exams/exam_registration_at/exam_registration_at.rb +242 -0
  408. data/lib/studium/exams/exam_registration_at/help.rb +46 -0
  409. data/lib/studium/exams/exam_registration_at/menu.rb +81 -0
  410. data/lib/studium/exams/exam_registration_at/report_and_show.rb +133 -0
  411. data/lib/studium/exams/exam_registration_at/reset.rb +54 -0
  412. data/lib/studium/exams/exam_statistics_from_this_file/exam_statistics_from_this_file.rb +119 -0
  413. data/lib/studium/exams/exam_topics.rb +194 -0
  414. data/lib/studium/exams/exams.rb +20 -0
  415. data/lib/studium/exams/exams_per_month/exams_per_month.rb +2438 -0
  416. data/lib/studium/exams/exams_this_week.rb +182 -0
  417. data/lib/studium/exams/fix_exam_dates.rb +121 -0
  418. data/lib/studium/exams/frozen.rb +36 -0
  419. data/lib/studium/exams/last_exams/last_exams.rb +398 -0
  420. data/lib/studium/exams/lectures_without_exam_entry.rb +137 -0
  421. data/lib/studium/exams/mandatory_continuous_assessment/mandatory_continuous_assessment.rb +1956 -0
  422. 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 +111 -0
  423. data/lib/studium/exams/n_exams_in_these_topics.rb +404 -0
  424. data/lib/studium/exams/next_exam.rb +107 -0
  425. data/lib/studium/exams/next_exams.rb +378 -0
  426. data/lib/studium/exams/open_exam_associated_url.rb +154 -0
  427. data/lib/studium/exams/open_last_exam_question_asked_file/constants.rb +15 -0
  428. data/lib/studium/exams/open_last_exam_question_asked_file/initialize.rb +29 -0
  429. data/lib/studium/exams/open_last_exam_question_asked_file/open_last_exam_question_asked_file.rb +109 -0
  430. data/lib/studium/exams/pr/303/274fung.rb +289 -0
  431. data/lib/studium/exams/push_solved_questions_on_top.rb +180 -0
  432. data/lib/studium/exams/questions_solved_from_day_to_day/questions_solved_from_day_to_day.rb +377 -0
  433. data/lib/studium/exams/remote_ftp_url.rb +52 -0
  434. data/lib/studium/exams/repeat_last_question.rb +78 -0
  435. data/lib/studium/exams/show_all_passed_exams_of_this_university.rb +252 -0
  436. data/lib/studium/exams/show_backlog_of_exams.rb +117 -0
  437. data/lib/studium/exams/show_next_exams_for.rb +133 -0
  438. data/lib/studium/exams/show_themes/constants.rb +28 -0
  439. data/lib/studium/exams/show_themes/menu.rb +61 -0
  440. data/lib/studium/exams/show_themes/misc.rb +537 -0
  441. data/lib/studium/exams/show_themes/reset.rb +62 -0
  442. data/lib/studium/exams/show_themes/show_themes.rb +27 -0
  443. data/lib/studium/exams/show_upcoming_exams/consider_autogenerating_exam_aliases.rb +181 -0
  444. data/lib/studium/exams/show_upcoming_exams/constants.rb +82 -0
  445. data/lib/studium/exams/show_upcoming_exams/help.rb +33 -0
  446. data/lib/studium/exams/show_upcoming_exams/initialize.rb +77 -0
  447. data/lib/studium/exams/show_upcoming_exams/menu.rb +60 -0
  448. data/lib/studium/exams/show_upcoming_exams/report.rb +200 -0
  449. data/lib/studium/exams/show_upcoming_exams/reset.rb +45 -0
  450. data/lib/studium/exams/show_upcoming_exams/run.rb +20 -0
  451. data/lib/studium/exams/show_upcoming_exams/show_upcoming_exams.rb +544 -0
  452. data/lib/studium/exams/solve_all_questions_from_this_topic.rb +114 -0
  453. data/lib/studium/exams/solved/constants.rb +32 -0
  454. data/lib/studium/exams/solved/help.rb +24 -0
  455. data/lib/studium/exams/solved/initialize.rb +55 -0
  456. data/lib/studium/exams/solved/menu.rb +41 -0
  457. data/lib/studium/exams/solved/reset.rb +28 -0
  458. data/lib/studium/exams/solved/solved.rb +313 -0
  459. data/lib/studium/exams/unsolve_all_questions_from_this_topic.rb +162 -0
  460. data/lib/studium/exams/upcoming_exams/constants.rb +15 -0
  461. data/lib/studium/exams/upcoming_exams/help.rb +41 -0
  462. data/lib/studium/exams/upcoming_exams/initialize.rb +27 -0
  463. data/lib/studium/exams/upcoming_exams/menu.rb +79 -0
  464. data/lib/studium/exams/upcoming_exams/misc.rb +415 -0
  465. data/lib/studium/exams/upcoming_exams/reset.rb +34 -0
  466. data/lib/studium/exams/upcoming_exams/run.rb +26 -0
  467. data/lib/studium/exams/upcoming_exams/upcoming_exams.rb +32 -0
  468. data/lib/studium/exams/upcoming_exams_at_the_boku/constants.rb +23 -0
  469. data/lib/studium/exams/upcoming_exams_at_the_boku/html.rb +64 -0
  470. data/lib/studium/exams/upcoming_exams_at_the_boku/upcoming_exams_at_the_boku.rb +194 -0
  471. data/lib/studium/exams/upcoming_exams_dataset.rb +247 -0
  472. data/lib/studium/exams/upload_exam_topics.rb +360 -0
  473. data/lib/studium/graphviz/README.md +4 -0
  474. data/lib/studium/graphviz/bachelor_vector_based_strategies.dot +160 -0
  475. data/lib/studium/graphviz/master_vector_based_strategies.dot +46 -0
  476. data/lib/studium/gui/gtk3/README.md +1 -0
  477. data/lib/studium/gui/gtk3/ask_exam_question/ask_exam_question.config +6 -0
  478. data/lib/studium/gui/gtk3/ask_exam_question/ask_exam_question.rb +760 -0
  479. data/lib/studium/gui/gtk3/ask_exam_question/manifest.yml +12 -0
  480. data/lib/studium/gui/gtk3/control_panel/control_panel.rb +39 -0
  481. data/lib/studium/gui/gtk3/curriculum_viewer/curriculum_viewer.rb +510 -0
  482. data/lib/studium/gui/gtk3/ects_per_university/ects_per_university.rb +217 -0
  483. data/lib/studium/gui/gtk3/exam_question_widget/exam_question_widget.rb +1887 -0
  484. data/lib/studium/gui/gtk3/expand_time_range/expand_time_range.rb +34 -0
  485. data/lib/studium/gui/gtk3/information_about_a_lecture/information_about_a_lecture.rb +34 -0
  486. data/lib/studium/gui/gtk3/lecture_information/lecture_information.rb +200 -0
  487. data/lib/studium/gui/gtk3/show_upcoming_exams/show_upcoming_exams.rb +34 -0
  488. data/lib/studium/gui/java/exam_question/ExamQuestion$1.class +0 -0
  489. data/lib/studium/gui/java/exam_question/ExamQuestion.class +0 -0
  490. data/lib/studium/gui/java/exam_question/ExamQuestion.java +215 -0
  491. data/lib/studium/gui/javafx/exam_question_widget/exam_question_widget.rb +58 -0
  492. data/lib/studium/gui/jruby/exam_question_widget/exam_question_widget.rb +317 -0
  493. data/lib/studium/gui/libui/ask_exam_question/ask_exam_question.rb +349 -0
  494. data/lib/studium/gui/shared_code/control_panel/control_panel_module.rb +314 -0
  495. data/lib/studium/gui/shared_code/exam_question_widget/exam_question_widget_module.rb +39 -0
  496. data/lib/studium/gui/shared_code/expand_time_range/expand_time_range.css +0 -0
  497. data/lib/studium/gui/shared_code/expand_time_range/expand_time_range_module.rb +190 -0
  498. data/lib/studium/gui/shared_code/information_about_a_lecture/information_about_a_lecture_module.rb +180 -0
  499. data/lib/studium/gui/shared_code/show_upcoming_exams/show_upcoming_exams_module.rb +206 -0
  500. data/lib/studium/images/libui_ask_exam_question.png +0 -0
  501. data/lib/studium/images/small_logos/DNA.png +0 -0
  502. data/lib/studium/images/small_logos/README.md +2 -0
  503. data/lib/studium/images/studies_favicon.png +0 -0
  504. data/lib/studium/java/Mkdir.java +15 -0
  505. data/lib/studium/java/README.md +2 -0
  506. data/lib/studium/java/ask_exam_question/AskExamQuestion.java +477 -0
  507. data/lib/studium/java/solved/Solved.class +0 -0
  508. data/lib/studium/java/solved/Solved.java +110 -0
  509. data/lib/studium/java/utility_scripts/OpenLastExamQuestionurlLinkViaTheBrowser.class +0 -0
  510. data/lib/studium/java/utility_scripts/OpenLastExamQuestionurlLinkViaTheBrowser.java +80 -0
  511. data/lib/studium/logging/README.md +2 -0
  512. data/lib/studium/logging/ensure_that_the_log_directory_exists.rb +47 -0
  513. data/lib/studium/logging/html_log_directory.rb +41 -0
  514. data/lib/studium/logging/log_directory.rb +112 -0
  515. data/lib/studium/logging/store_last_question_asked_into_file.rb +137 -0
  516. data/lib/studium/parsers/README.md +2 -0
  517. data/lib/studium/parsers/custom_exam_results_parser.rb +206 -0
  518. data/lib/studium/parsers/parse_lva_dates.rb +190 -0
  519. data/lib/studium/parsers/parse_remote_lecture.rb +325 -0
  520. data/lib/studium/project/project.rb +76 -0
  521. data/lib/studium/requires/common_popular_requires.rb +37 -0
  522. data/lib/studium/requires/commonly_used_requires.rb +14 -0
  523. data/lib/studium/requires/require_class_exams_solved.rb +7 -0
  524. data/lib/studium/requires/require_ects_scripts.rb +27 -0
  525. data/lib/studium/requires/require_encoding.rb +7 -0
  526. data/lib/studium/requires/require_the_check_and_sanitize_files.rb +31 -0
  527. data/lib/studium/requires/require_the_curricula_files.rb +28 -0
  528. data/lib/studium/requires/require_the_exam_question_class.rb +7 -0
  529. data/lib/studium/requires/require_the_exams_files.rb +45 -0
  530. data/lib/studium/requires/require_the_logging_files.rb +23 -0
  531. data/lib/studium/requires/require_the_parsers.rb +28 -0
  532. data/lib/studium/requires/require_the_studium_constants.rb +10 -0
  533. data/lib/studium/requires/require_the_studium_project.rb +54 -0
  534. data/lib/studium/requires/require_the_toplevel_methods.rb +27 -0
  535. data/lib/studium/requires/require_the_utility_scripts.rb +49 -0
  536. data/lib/studium/requires/require_upcoming_exams.rb +7 -0
  537. data/lib/studium/requires/require_yaml.rb +7 -0
  538. data/lib/studium/requires/return_remote_homepage_of_this_lecture.rb +7 -0
  539. data/lib/studium/requires/with_GUI.rb +13 -0
  540. data/lib/studium/requires/www_mode.rb +17 -0
  541. data/lib/studium/statistics/README.md +4 -0
  542. data/lib/studium/statistics/best_exam_months.rb +92 -0
  543. data/lib/studium/statistics/curriculum_comparer.rb +336 -0
  544. data/lib/studium/statistics/determine_exam_statistics_from_this_file.rb +142 -0
  545. data/lib/studium/statistics/exam_topics_that_are_about_to_be_completed.rb +119 -0
  546. data/lib/studium/statistics/max_stats.rb +170 -0
  547. data/lib/studium/statistics/new_questions_per_year.rb +147 -0
  548. data/lib/studium/statistics/report_how_many_ects_points_per_curriculum_were_completed.rb +167 -0
  549. data/lib/studium/statistics/report_how_many_exam_questions_were_answered.rb +473 -0
  550. data/lib/studium/statistics/show_exam_statistics.rb +60 -0
  551. data/lib/studium/statistics/show_which_courses_are_in_a_bachelor_or_master_curriculum_respectively.rb +104 -0
  552. data/lib/studium/statistics/top_stats.rb +127 -0
  553. data/lib/studium/toplevel_methods/all_passed_exams.rb +37 -0
  554. data/lib/studium/toplevel_methods/already_solved_this_lecture.rb +100 -0
  555. data/lib/studium/toplevel_methods/available_topics.rb +156 -0
  556. data/lib/studium/toplevel_methods/average_grade.rb +141 -0
  557. data/lib/studium/toplevel_methods/calculate_pr/303/274fungsimmanente_lectures_from_this_file.rb +55 -0
  558. data/lib/studium/toplevel_methods/copy_the_last_backup_of_file_lecture_information.rb +34 -0
  559. data/lib/studium/toplevel_methods/curriculum_related_code.rb +999 -0
  560. data/lib/studium/toplevel_methods/determine_local_directory_of_this_lecture.rb +72 -0
  561. data/lib/studium/toplevel_methods/does_this_course_require_mandatory_presence.rb +51 -0
  562. data/lib/studium/toplevel_methods/download.rb +163 -0
  563. data/lib/studium/toplevel_methods/e.rb +16 -0
  564. data/lib/studium/toplevel_methods/ects_from_lectures.rb +250 -0
  565. data/lib/studium/toplevel_methods/editor.rb +65 -0
  566. data/lib/studium/toplevel_methods/esystem.rb +22 -0
  567. data/lib/studium/toplevel_methods/filter_away_invalid_questions.rb +77 -0
  568. data/lib/studium/toplevel_methods/find_exam_topic_and_exam_title.rb +3442 -0
  569. data/lib/studium/toplevel_methods/handle_archive_of_the_exam_questions.rb +136 -0
  570. data/lib/studium/toplevel_methods/has_this_lecture_been_already_passed_but_the_id_was_changed_lateron.rb +42 -0
  571. data/lib/studium/toplevel_methods/has_this_module_been_completed.rb +206 -0
  572. data/lib/studium/toplevel_methods/install_the_project_on_the_given_hostsystem.rb +32 -0
  573. data/lib/studium/toplevel_methods/is_on_roebe.rb +26 -0
  574. data/lib/studium/toplevel_methods/is_this_exam_topic_included.rb +46 -0
  575. data/lib/studium/toplevel_methods/is_this_homepage_registered.rb +31 -0
  576. data/lib/studium/toplevel_methods/is_this_lecture_a_practical_course.rb +100 -0
  577. data/lib/studium/toplevel_methods/is_this_lecture_registered_in_upcoming_exams.rb +42 -0
  578. data/lib/studium/toplevel_methods/java.rb +32 -0
  579. data/lib/studium/toplevel_methods/lecture_information.rb +106 -0
  580. data/lib/studium/toplevel_methods/lva_numbers.rb +355 -0
  581. data/lib/studium/toplevel_methods/main_dataset.rb +73 -0
  582. data/lib/studium/toplevel_methods/methods_related_to_directories.rb +225 -0
  583. data/lib/studium/toplevel_methods/methods_related_to_files.rb +205 -0
  584. data/lib/studium/toplevel_methods/misc.rb +169 -0
  585. data/lib/studium/toplevel_methods/n_questions_available.rb +137 -0
  586. data/lib/studium/toplevel_methods/n_topics_available.rb +63 -0
  587. data/lib/studium/toplevel_methods/names_of_all_solved_exams.rb +71 -0
  588. data/lib/studium/toplevel_methods/note_down_the_start_time_and_how_many_exams_have_been_already_solved.rb +69 -0
  589. data/lib/studium/toplevel_methods/opnn.rb +25 -0
  590. data/lib/studium/toplevel_methods/passed_this_exam_on.rb +105 -0
  591. data/lib/studium/toplevel_methods/pristine.rb +69 -0
  592. data/lib/studium/toplevel_methods/read_delay_between_questions_from_file.rb +34 -0
  593. data/lib/studium/toplevel_methods/regexes.rb +90 -0
  594. data/lib/studium/toplevel_methods/registered_for_this_exam.rb +62 -0
  595. data/lib/studium/toplevel_methods/remove_comments.rb +26 -0
  596. data/lib/studium/toplevel_methods/remove_exam_topics_that_were_already_answered.rb +27 -0
  597. data/lib/studium/toplevel_methods/remove_tags.rb +32 -0
  598. data/lib/studium/toplevel_methods/report.rb +419 -0
  599. data/lib/studium/toplevel_methods/return_all_exams_on_this_day.rb +66 -0
  600. data/lib/studium/toplevel_methods/return_dataset_for_this_exam_topic.rb +41 -0
  601. data/lib/studium/toplevel_methods/return_div_timetable_of_upcoming_exams.rb +498 -0
  602. data/lib/studium/toplevel_methods/return_ects_from_this_lecture_stored_in_the_file_lecture_information.rb +194 -0
  603. data/lib/studium/toplevel_methods/return_hash_of_already_solved_lectures.rb +46 -0
  604. data/lib/studium/toplevel_methods/return_last_exam_question.rb +34 -0
  605. data/lib/studium/toplevel_methods/return_local_path_of_this_pwdstud.rb +60 -0
  606. data/lib/studium/toplevel_methods/return_lva_number_of_this_lecture.rb +72 -0
  607. data/lib/studium/toplevel_methods/return_n_percent_solved_from_this_topic.rb +90 -0
  608. data/lib/studium/toplevel_methods/return_n_questions_were_answered_for_this_topic.rb +60 -0
  609. data/lib/studium/toplevel_methods/return_proper_university_image.rb +86 -0
  610. data/lib/studium/toplevel_methods/return_question_answer_string_from_this_topic.rb +63 -0
  611. data/lib/studium/toplevel_methods/return_remote_homepage_of_this_lecture.rb +9400 -0
  612. data/lib/studium/toplevel_methods/return_remote_moodle_link_of_this_lecture.rb +1661 -0
  613. data/lib/studium/toplevel_methods/return_sanitized_dataset_from_the_file_lecture_information.rb +110 -0
  614. data/lib/studium/toplevel_methods/return_theme_of_the_next_upcoming_exam.rb +38 -0
  615. data/lib/studium/toplevel_methods/rinstall2.rb +34 -0
  616. data/lib/studium/toplevel_methods/rti_conflict.rb +35 -0
  617. data/lib/studium/toplevel_methods/runmode.rb +87 -0
  618. data/lib/studium/toplevel_methods/sanitized_dataset_from_file_passed_exams_per_month.rb +52 -0
  619. data/lib/studium/toplevel_methods/set_last_file_for_exam_questions.rb +64 -0
  620. data/lib/studium/toplevel_methods/set_this_cd_alias_to.rb +86 -0
  621. data/lib/studium/toplevel_methods/show_passed_exams_having_this_grade.rb +34 -0
  622. data/lib/studium/toplevel_methods/spacer.rb +18 -0
  623. data/lib/studium/toplevel_methods/time.rb +239 -0
  624. data/lib/studium/toplevel_methods/total_ects_points_passed.rb +72 -0
  625. data/lib/studium/toplevel_methods/try_to_guess_the_most_likely_lva_id.rb +57 -0
  626. data/lib/studium/toplevel_methods/try_to_return_the_expanded_name_of_this_lecture.rb +63 -0
  627. data/lib/studium/toplevel_methods/unfinished.rb +51 -0
  628. data/lib/studium/toplevel_methods/url.rb +100 -0
  629. data/lib/studium/toplevel_methods/verbose_truth.rb +36 -0
  630. data/lib/studium/toplevel_methods/when_was_this_lecture_passed.rb +54 -0
  631. data/lib/studium/toplevel_methods/word_wrap.rb +56 -0
  632. data/lib/studium/toplevel_methods/write_into_file_related_functionality.rb +189 -0
  633. data/lib/studium/toplevel_methods/yes_or_no_ja_oder_nein.rb +33 -0
  634. data/lib/studium/universities_in_austria/README.md +2 -0
  635. data/lib/studium/universities_in_austria/boku/README.md +4 -0
  636. data/lib/studium/universities_in_austria/boku/boku_/303/266ffnungszeiten.rb +28 -0
  637. data/lib/studium/universities_in_austria/boku/show_three_pillars_of_these_lectures.rb +110 -0
  638. data/lib/studium/universities_in_austria/boku/three_pillars.rb +237 -0
  639. data/lib/studium/universities_in_austria/tu_vienna/README.md +6 -0
  640. data/lib/studium/universities_in_austria/tu_vienna/tu_ferien.rb +42 -0
  641. data/lib/studium/universities_in_austria/tu_vienna/tu_/303/266ffnungszeiten.rb +34 -0
  642. data/lib/studium/utility_scripts/attribute_lecture_to_curriculum/attribute_boku_lecture_to_curriculum.rb +384 -0
  643. data/lib/studium/utility_scripts/attribute_lecture_to_curriculum/attribute_lecture_to_curriculum.rb +238 -0
  644. data/lib/studium/utility_scripts/attribute_lectures_to_university/attribute_lectures_to_university.rb +375 -0
  645. data/lib/studium/utility_scripts/audio_stats.rb +171 -0
  646. data/lib/studium/utility_scripts/auto_stud/auto_stud.rb +252 -0
  647. data/lib/studium/utility_scripts/auto_stud/constants.rb +18 -0
  648. data/lib/studium/utility_scripts/auto_stud/initialize.rb +23 -0
  649. data/lib/studium/utility_scripts/auto_stud/misc.rb +18 -0
  650. data/lib/studium/utility_scripts/autopurge_this_lecture_date.rb +93 -0
  651. data/lib/studium/utility_scripts/average_grade_of_this_curriculum.rb +101 -0
  652. data/lib/studium/utility_scripts/calendar/README.md +2 -0
  653. data/lib/studium/utility_scripts/calendar/calendar.rb +251 -0
  654. data/lib/studium/utility_scripts/calendar/misc.rb +35 -0
  655. data/lib/studium/utility_scripts/check_description_of_these_lectures.rb +221 -0
  656. data/lib/studium/utility_scripts/create_database/create_database.rb +106 -0
  657. data/lib/studium/utility_scripts/current_lectures_belonging_to_both_bachelor_and_master_curriculum.rb +113 -0
  658. data/lib/studium/utility_scripts/currently_participating_in_these_lectures/currently_participating_in_these_lectures.rb +104 -0
  659. data/lib/studium/utility_scripts/display_lecture_url.rb +160 -0
  660. data/lib/studium/utility_scripts/expand_time_range/expand_time_range.rb +414 -0
  661. data/lib/studium/utility_scripts/finished_exams_at_this_university.rb +94 -0
  662. data/lib/studium/utility_scripts/foreign_language_percentage/constants.rb +23 -0
  663. data/lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb +149 -0
  664. data/lib/studium/utility_scripts/foreign_language_percentage/help.rb +31 -0
  665. data/lib/studium/utility_scripts/foreign_language_percentage/initialize.rb +25 -0
  666. data/lib/studium/utility_scripts/foreign_language_percentage/menu.rb +158 -0
  667. data/lib/studium/utility_scripts/foreign_language_percentage/report.rb +62 -0
  668. data/lib/studium/utility_scripts/foreign_language_percentage/reset.rb +50 -0
  669. data/lib/studium/utility_scripts/foreign_language_percentage/run.rb +19 -0
  670. data/lib/studium/utility_scripts/generate_spreadsheet/generate_spreadsheet.rb +354 -0
  671. data/lib/studium/utility_scripts/generate_spreadsheet/misc.rb +144 -0
  672. data/lib/studium/utility_scripts/holidays/holidays.rb +150 -0
  673. data/lib/studium/utility_scripts/homepage_of_these_courses.rb +118 -0
  674. data/lib/studium/utility_scripts/lecture_downloader.rb +107 -0
  675. data/lib/studium/utility_scripts/lectures_attributed_to_universities.rb +336 -0
  676. data/lib/studium/utility_scripts/lva_dates_of_the_important_courses.rb +111 -0
  677. data/lib/studium/utility_scripts/lva_nummer.rb +431 -0
  678. data/lib/studium/utility_scripts/mandatory_lectures_in_this_month/mandatory_lectures_in_this_month.rb +316 -0
  679. data/lib/studium/utility_scripts/name_of_this_lva_id.rb +110 -0
  680. data/lib/studium/utility_scripts/new_stud.rb +324 -0
  681. data/lib/studium/utility_scripts/next_week.rb +103 -0
  682. data/lib/studium/utility_scripts/open_last_exam_question_url_link_via_the_browser.rb +76 -0
  683. data/lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb +177 -0
  684. data/lib/studium/utility_scripts/passed_pr/303/274fungsimmanente_courses/passed_pr/303/274fungsimmanente_courses.rb +181 -0
  685. data/lib/studium/utility_scripts/pdf/README.md +2 -0
  686. data/lib/studium/utility_scripts/pdf/create_pdf_file_for_this_exam_topic.rb +355 -0
  687. data/lib/studium/utility_scripts/pdf/hexapdf_support.rb +50 -0
  688. data/lib/studium/utility_scripts/preparatory_meetings/preparatory_meetings.rb +312 -0
  689. data/lib/studium/utility_scripts/priority.rb +164 -0
  690. data/lib/studium/utility_scripts/priority_points/priority_points.rb +263 -0
  691. data/lib/studium/utility_scripts/publish_my_exams.rb +174 -0
  692. data/lib/studium/utility_scripts/regexes/README.md +1 -0
  693. data/lib/studium/utility_scripts/regexes/generate_regex.rb +300 -0
  694. data/lib/studium/utility_scripts/regexes/generate_regexes_for_the_available_moodle_links.rb +55 -0
  695. data/lib/studium/utility_scripts/regexes/generate_regexes_for_the_registered_lectures.rb +48 -0
  696. data/lib/studium/utility_scripts/report_outdated_timetable_entries/report_outdated_timetable_entries.rb +142 -0
  697. data/lib/studium/utility_scripts/report_total_amount_of_questions_and_answers_for.rb +116 -0
  698. data/lib/studium/utility_scripts/report_whether_this_lecture_is_registered_in_the_file_lecture_information.rb +128 -0
  699. data/lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/individual_resolve_practical_courses_date_conflicts.rb +254 -0
  700. data/lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb +265 -0
  701. data/lib/studium/utility_scripts/scrape_remote_university_url.rb +138 -0
  702. data/lib/studium/utility_scripts/semester_schedule_creator/semester_container.rb +144 -0
  703. data/lib/studium/utility_scripts/semester_schedule_creator/semester_schedule_creator.rb +374 -0
  704. data/lib/studium/utility_scripts/semesterplaner.rb +289 -0
  705. data/lib/studium/utility_scripts/set_aliases_based_on_this_file.rb +95 -0
  706. data/lib/studium/utility_scripts/show_all_passed_master_lectures.rb +119 -0
  707. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/show_conflicting_lva_lectures.rb +1238 -0
  708. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/constants.rb +23 -0
  709. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/menu.rb +63 -0
  710. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/reset.rb +33 -0
  711. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/run.rb +50 -0
  712. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/show_descriptions_of_lectures_belonging_to_this_module.rb +145 -0
  713. data/lib/studium/utility_scripts/show_lecturers/show_lecturers.rb +147 -0
  714. data/lib/studium/utility_scripts/show_lectures/constants.rb +11 -0
  715. data/lib/studium/utility_scripts/show_lectures/help.rb +34 -0
  716. data/lib/studium/utility_scripts/show_lectures/initialize.rb +23 -0
  717. data/lib/studium/utility_scripts/show_lectures/menu.rb +127 -0
  718. data/lib/studium/utility_scripts/show_lectures/misc.rb +584 -0
  719. data/lib/studium/utility_scripts/show_lectures/reset.rb +89 -0
  720. data/lib/studium/utility_scripts/show_lectures/run.rb +27 -0
  721. data/lib/studium/utility_scripts/show_lectures/show_lectures.rb +48 -0
  722. data/lib/studium/utility_scripts/show_lectures_fitting_to_this_language/show_lectures_fitting_to_this_language.rb +121 -0
  723. data/lib/studium/utility_scripts/show_lectures_fitting_to_this_theme/show_lectures_fitting_to_this_theme.rb +105 -0
  724. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/constants.rb +17 -0
  725. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/determine.rb +673 -0
  726. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/help.rb +44 -0
  727. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/html.rb +605 -0
  728. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/initialize.rb +56 -0
  729. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/konsole.rb +32 -0
  730. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/menu.rb +472 -0
  731. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/misc.rb +837 -0
  732. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/reset.rb +121 -0
  733. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/run.rb +44 -0
  734. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/show.rb +106 -0
  735. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/show_lectures_on_the_commandline.rb +261 -0
  736. data/lib/studium/utility_scripts/show_lectures_on_the_commandline/sorted_individual_curricula.rb +121 -0
  737. data/lib/studium/utility_scripts/show_lectures_on_this_day.rb +149 -0
  738. data/lib/studium/utility_scripts/show_lva_dates_of_this_lecture.rb +169 -0
  739. data/lib/studium/utility_scripts/show_mixed_bachelor_master_courses/show_mixed_bachelor_master_courses.rb +91 -0
  740. data/lib/studium/utility_scripts/show_outdated_lva_dates/show_outdated_lva_dates.rb +210 -0
  741. data/lib/studium/utility_scripts/show_solved_english_lectures/show_solved_english_lectures.rb +139 -0
  742. data/lib/studium/utility_scripts/steop/README.md +4 -0
  743. data/lib/studium/utility_scripts/steop/show_all_steop_lectures.rb +93 -0
  744. data/lib/studium/utility_scripts/steop/steop_lectures_in_this_curriculum.rb +284 -0
  745. data/lib/studium/utility_scripts/steop/steop_lva_dates.rb +119 -0
  746. data/lib/studium/utility_scripts/studienkennzahl.rb +116 -0
  747. data/lib/studium/utility_scripts/studium_skeleton/studium_skeleton.rb +227 -0
  748. data/lib/studium/utility_scripts/stundenplan.rb +595 -0
  749. data/lib/studium/utility_scripts/sync_studium_relevant_entries_one_level_downwards.rb +217 -0
  750. data/lib/studium/utility_scripts/ufind/ufind.rb +98 -0
  751. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/constants.rb +26 -0
  752. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/run.rb +20 -0
  753. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/upcoming_mandatory_presence_courses.rb +181 -0
  754. data/lib/studium/utility_scripts/week_parser/constants.rb +23 -0
  755. data/lib/studium/utility_scripts/week_parser/help.rb +32 -0
  756. data/lib/studium/utility_scripts/week_parser/menu.rb +59 -0
  757. data/lib/studium/utility_scripts/week_parser/misc.rb +373 -0
  758. data/lib/studium/utility_scripts/week_parser/reset.rb +65 -0
  759. data/lib/studium/utility_scripts/week_parser/run.rb +18 -0
  760. data/lib/studium/utility_scripts/week_parser/show.rb +236 -0
  761. data/lib/studium/utility_scripts/week_parser/week_parser.rb +49 -0
  762. data/lib/studium/utility_scripts/weekday_parser.rb +155 -0
  763. data/lib/studium/utility_scripts/weekly_schedule.rb +198 -0
  764. data/lib/studium/utility_scripts/wochenplanung.rb +261 -0
  765. data/lib/studium/version/version.rb +46 -0
  766. data/lib/studium/www/curricula_displayer.cgi +197 -0
  767. data/lib/studium/www/curriculum_displayer.rb +162 -0
  768. data/lib/studium/www/exams.cgi +53 -0
  769. data/lib/studium/www/fast_ask_exam_question.cgi +155 -0
  770. data/lib/studium/www/sinatra/app.rb +231 -0
  771. data/lib/studium/www/sinatra/misc.rb +115 -0
  772. data/lib/studium/www/statistics/statistics.cgi +59 -0
  773. data/lib/studium/yaml/ad_hoc_trainer/README.md +2 -0
  774. data/lib/studium/yaml/ad_hoc_trainer/exam_topics.md +15 -0
  775. data/lib/studium/yaml/allowed_themes_for_exams.yml +344 -0
  776. data/lib/studium/yaml/array_allowed_entries_for_the_file_lecture_information.yml +70 -0
  777. data/lib/studium/yaml/available_exam_topics/available_exam_topics.yml +234 -0
  778. data/lib/studium/yaml/backlog_of_exams.yml +37 -0
  779. data/lib/studium/yaml/colours/custom_colours.yml +28 -0
  780. data/lib/studium/yaml/colours/use_colours.yml +1 -0
  781. data/lib/studium/yaml/current_exams.yml +19 -0
  782. data/lib/studium/yaml/curricula/README.md +9 -0
  783. data/lib/studium/yaml/curricula/bachelor/bachelor_agrarwissenschaften_033255.yml +142 -0
  784. data/lib/studium/yaml/curricula/bachelor/bachelor_biologie_basisblock_033630.yml +65 -0
  785. data/lib/studium/yaml/curricula/bachelor/bachelor_biologie_botanik_033630.yml +84 -0
  786. data/lib/studium/yaml/curricula/bachelor/bachelor_biologie_ecology_033630.yml +74 -0
  787. data/lib/studium/yaml/curricula/bachelor/bachelor_biologie_mikrobiologie_und_genetik_033630.yml +120 -0
  788. data/lib/studium/yaml/curricula/bachelor/bachelor_biologie_molekulare_biologie_033630.yml +104 -0
  789. data/lib/studium/yaml/curricula/bachelor/bachelor_biologie_zoologie_033630.yml +87 -0
  790. data/lib/studium/yaml/curricula/bachelor/bachelor_chemie_033662.yml +165 -0
  791. data/lib/studium/yaml/curricula/bachelor/bachelor_dummy_curriculum.yml +183 -0
  792. data/lib/studium/yaml/curricula/bachelor/bachelor_elektrotechnik_und_informationstechnik_033235.yml +13 -0
  793. data/lib/studium/yaml/curricula/bachelor/bachelor_forstwirtschaft_033225.yml +115 -0
  794. data/lib/studium/yaml/curricula/bachelor/bachelor_informatik_033521.yml +130 -0
  795. data/lib/studium/yaml/curricula/bachelor/bachelor_ktww_033231.yml +84 -0
  796. data/lib/studium/yaml/curricula/bachelor/bachelor_lmbt_033217.yml +118 -0
  797. data/lib/studium/yaml/curricula/bachelor/bachelor_medizinische_informatik_033533.yml +203 -0
  798. data/lib/studium/yaml/curricula/bachelor/bachelor_molekularbiologie_033665.yml +95 -0
  799. data/lib/studium/yaml/curricula/bachelor/bachelor_nutrition_science_033638.yml +119 -0
  800. data/lib/studium/yaml/curricula/bachelor/bachelor_pharmazie_033305.yml +170 -0
  801. data/lib/studium/yaml/curricula/bachelor/bachelor_technische_chemie_033290.yml +129 -0
  802. data/lib/studium/yaml/curricula/bachelor/bachelor_technische_informatik_033535.yml +23 -0
  803. data/lib/studium/yaml/curricula/bachelor/bachelor_ubrm_033227.yml +136 -0
  804. data/lib/studium/yaml/curricula/bachelor/bachelor_verfahrenstechnik_033273.yml +167 -0
  805. data/lib/studium/yaml/curricula/bachelor/bachelor_wirtschaftsinformatik_033526.yml +29 -0
  806. data/lib/studium/yaml/curricula/individual/bachelor_informatik_und_molekulare_biologie.yml +1161 -0
  807. data/lib/studium/yaml/curricula/individual/bachelor_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology.yml +1157 -0
  808. data/lib/studium/yaml/curricula/individual/master_bioinformatics_and_nanobiotechnology_in_molecular_medicine.yml +306 -0
  809. data/lib/studium/yaml/curricula/individual/master_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology.yml +741 -0
  810. data/lib/studium/yaml/curricula/master/master_bioinformatik_066875.yml +76 -0
  811. data/lib/studium/yaml/curricula/master/master_biologie_molekulare_mikrobiologie_mikrobielle_oekologie_und_immunbiologie_066830.yml +78 -0
  812. data/lib/studium/yaml/curricula/master/master_biologische_chemie_066863.yml +61 -0
  813. data/lib/studium/yaml/curricula/master/master_dummy_curriculum.yml +197 -0
  814. data/lib/studium/yaml/curricula/master/master_genetik_und_entwicklungsbiologie_066877.yml +89 -0
  815. data/lib/studium/yaml/curricula/master/master_lmbt_066418.yml +111 -0
  816. data/lib/studium/yaml/curricula/master/master_molekulare_biologie_066834.yml +142 -0
  817. data/lib/studium/yaml/curricula/master/master_pharmazie_066605.yml +170 -0
  818. data/lib/studium/yaml/curricula/master/master_technische_chemie_066490.yml +123 -0
  819. data/lib/studium/yaml/curricula/outdated/master_bioinformatics_and_molecular_biotechnology_including_aspects_from_molecular_medicine.yml +438 -0
  820. data/lib/studium/yaml/curricula/outdated/master_food_science_and_plant_biotechnology.yml +31 -0
  821. data/lib/studium/yaml/curricula.yml +538 -0
  822. data/lib/studium/yaml/daily_questions_solved.yml +1468 -0
  823. data/lib/studium/yaml/default_delay.yml +4 -0
  824. data/lib/studium/yaml/default_encoding.yml +1 -0
  825. data/lib/studium/yaml/directory_to_the_exam_topics.yml +0 -0
  826. data/lib/studium/yaml/editor.yml +1 -0
  827. data/lib/studium/yaml/file_for_exam_questions.yml +1 -0
  828. data/lib/studium/yaml/german/README.md +2 -0
  829. data/lib/studium/yaml/german/german_to_english_month_names.yml +16 -0
  830. data/lib/studium/yaml/grouped_themes.yml +192 -0
  831. data/lib/studium/yaml/holidays.yml +194 -0
  832. data/lib/studium/yaml/important_exams.yml +226 -0
  833. data/lib/studium/yaml/inscription_dates_of_universities.yml +60 -0
  834. data/lib/studium/yaml/lecture_aliases.yml +138 -0
  835. data/lib/studium/yaml/lecture_information/lecture_information.yml +55870 -0
  836. data/lib/studium/yaml/log_dir.yml +1 -0
  837. data/lib/studium/yaml/main_topic.yml +11 -0
  838. data/lib/studium/yaml/max_stats.yml +241 -0
  839. data/lib/studium/yaml/meta_themes/README.md +13 -0
  840. data/lib/studium/yaml/meta_themes/biochemistry.md +6 -0
  841. data/lib/studium/yaml/meta_themes/bioinformatics.md +6 -0
  842. data/lib/studium/yaml/meta_themes/biotechnology.md +9 -0
  843. data/lib/studium/yaml/meta_themes/chemistry.md +9 -0
  844. data/lib/studium/yaml/meta_themes/genetics.md +10 -0
  845. data/lib/studium/yaml/meta_themes/immunology.md +5 -0
  846. data/lib/studium/yaml/meta_themes/metabolic_pathways.md +12 -0
  847. data/lib/studium/yaml/meta_themes/molecular_biology.md +9 -0
  848. data/lib/studium/yaml/meta_themes/protein_engineering.md +10 -0
  849. data/lib/studium/yaml/meta_themes/statistics.md +2 -0
  850. data/lib/studium/yaml/mitbelegung/README.md +4 -0
  851. data/lib/studium/yaml/mitbelegung/mitbelegung.yml +23 -0
  852. data/lib/studium/yaml/mitteilungsbl/303/244tter/mitteilungsbl/303/244tter.yml +363 -0
  853. data/lib/studium/yaml/n_total_questions.yml +1 -0
  854. data/lib/studium/yaml/rename_konsole_tab.yml +1 -0
  855. data/lib/studium/yaml/show_topic.yml +1 -0
  856. data/lib/studium/yaml/statistics/max_stats.yml +239 -0
  857. data/lib/studium/yaml/statistics/statistics.yml +69 -0
  858. data/lib/studium/yaml/week/01_monday.yml +5 -0
  859. data/lib/studium/yaml/week/02_tuesday.yml +75 -0
  860. data/lib/studium/yaml/week/03_wednesday.yml +62 -0
  861. data/lib/studium/yaml/week/04_thursday.yml +14 -0
  862. data/lib/studium/yaml/week/05_friday.yml +31 -0
  863. data/lib/studium/yaml/week/06_saturday.yml +16 -0
  864. data/lib/studium/yaml/week/07_sunday.yml +0 -0
  865. data/lib/studium/yaml/week/README.md +13 -0
  866. data/lib/studium.rb +5 -0
  867. data/studium.gemspec +80 -0
  868. data/test/testing_studium.rb +244 -0
  869. data/test/testing_studium_base_class.rb +17 -0
  870. data/test/testing_time_component.rb +29 -0
  871. metadata +1078 -0
@@ -0,0 +1,2142 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'studium/constants/constants.rb'
6
+ # Studium.file_passed_exams_per_month
7
+ # =========================================================================== #
8
+ module Studium
9
+
10
+ require 'studium/project/project.rb'
11
+ require 'studium/requires/require_yaml.rb'
12
+ # ========================================================================= #
13
+ # Pull in the encoding-related constants next:
14
+ # ========================================================================= #
15
+ require 'studium/requires/require_encoding.rb'
16
+ require 'studium/logging/log_directory.rb'
17
+ require 'studium/toplevel_methods/is_on_roebe.rb'
18
+ # =========================================================================== #
19
+ # The next file is necessary for the sfile() functionality.
20
+ # =========================================================================== #
21
+ require 'studium/colours/colours.rb'
22
+ require 'studium/constants/colours.rb'
23
+
24
+ # ========================================================================= #
25
+ # === @exam_topics
26
+ # ========================================================================= #
27
+ @exam_topics = nil # Initialize it.
28
+
29
+ # ========================================================================= #
30
+ # === @file_lecture_information
31
+ # ========================================================================= #
32
+ @file_lecture_information = nil
33
+
34
+ # ========================================================================= #
35
+ # === NAMESPACE
36
+ # ========================================================================= #
37
+ NAMESPACE = inspect
38
+
39
+ # ========================================================================= #
40
+ # === USERS_X
41
+ # ========================================================================= #
42
+ USERS_X = '/home/x/'
43
+
44
+ # ========================================================================= #
45
+ # === N
46
+ # ========================================================================= #
47
+ N = "\n" # Define the newline for easier changes.
48
+
49
+ # ========================================================================= #
50
+ # === T
51
+ # ========================================================================= #
52
+ T = "\t"
53
+
54
+ # ========================================================================= #
55
+ # === THRESHOLD_VALUE_N_EXAMS_AT_MAXIMUM
56
+ #
57
+ # The following constant will only be honoured if the above-defined constant
58
+ # WARN_THE_USER_IF_THERE_ARE_TOO_MANY_QUESTIONS_REGISTERED_IN_AN_EXAM_TOPIC
59
+ # has been set to true.
60
+ #
61
+ # The current threshold is set to 1000, meaning that if an exam-topic
62
+ # has more than 1000 registered questions/answers, the user will be
63
+ # notified of this, if the above constant was set to true.
64
+ # ========================================================================= #
65
+ THRESHOLD_VALUE_N_EXAMS_AT_MAXIMUM = 1000
66
+
67
+ # ========================================================================= #
68
+ # === CHECK_FOR_INCORRECT_ENTRIES_IN_THE_QUESTION_ANSWER_FILE_THAT_SHOULD_BE_COMMENTS
69
+ #
70
+ # If the following constant is set to true, then a certain method will
71
+ # check whether lines start with e. g. "t#" rather than "#". This is
72
+ # an indication that some typo is in that exam-questions file, which
73
+ # we then can auto-correct.
74
+ # ========================================================================= #
75
+ CHECK_FOR_INCORRECT_ENTRIES_IN_THE_QUESTION_ANSWER_FILE_THAT_SHOULD_BE_COMMENTS =
76
+ true
77
+
78
+ # ========================================================================= #
79
+ # === DEFAULT_TOPIC
80
+ #
81
+ # What is our default topic? We define it here. This may be used in
82
+ # the file dataset.rb
83
+ # ========================================================================= #
84
+ DEFAULT_TOPIC = 'rand'
85
+
86
+ # ========================================================================= #
87
+ # === WARN_THE_USER_IF_THERE_ARE_TOO_MANY_QUESTIONS_REGISTERED_IN_AN_EXAM_TOPIC
88
+ # ========================================================================= #
89
+ WARN_THE_USER_IF_THERE_ARE_TOO_MANY_QUESTIONS_REGISTERED_IN_AN_EXAM_TOPIC = true
90
+
91
+ # ========================================================================= #
92
+ # === CHEERING_PERSON
93
+ #
94
+ # This ASCII "symbol" is repeated in many classes of the Studium namespace,
95
+ # indicating a success (via a cheering person who throws up the arms).
96
+ # ========================================================================= #
97
+ CHEERING_PERSON = '\\o/'
98
+
99
+ # ========================================================================= #
100
+ # === RIGHT_ARROW
101
+ # ========================================================================= #
102
+ RIGHT_ARROW = '→'
103
+
104
+ # ========================================================================= #
105
+ # === UNICODE_CHECKMARK
106
+ # ========================================================================= #
107
+ UNICODE_CHECKMARK = '✓'
108
+
109
+ # ========================================================================= #
110
+ # === ROEBE_STUDIUM_DIR
111
+ #
112
+ # An important base constant for my home system.
113
+ #
114
+ # As can be seen, this either makes use of the environment variable
115
+ # STUDIUM, or simply uses a hardcoded path.
116
+ # ========================================================================= #
117
+ if ENV['MY_STUDIUM']
118
+ ROEBE_STUDIUM_DIR = "#{ENV['MY_STUDIUM']}/"
119
+ else # else hardcode it.
120
+ ROEBE_STUDIUM_DIR = "#{USERS_X}studium/"
121
+ end
122
+ # STUD = ROEBE_STUDIUM_DIR # === STUD # Disabled as of July 2022.
123
+ STUDIUM = ROEBE_STUDIUM_DIR # === STUDIUM
124
+ # ======================================================================= #
125
+ # === LOCAL_STUDIUM_DIR
126
+ # ======================================================================= #
127
+ LOCAL_STUDIUM_DIR = ROEBE_STUDIUM_DIR # === LOCAL_STUDIUM_DIR
128
+
129
+ # ========================================================================= #
130
+ # === MY_DATA
131
+ # ========================================================================= #
132
+ if ENV['MY_DATA']
133
+ MY_DATA = "#{ENV['MY_DATA'].to_s}/"
134
+ else
135
+ MY_DATA = "#{USERS_X}data/"
136
+ end
137
+
138
+ # ========================================================================= #
139
+ # === APPEND_THIS
140
+ # ========================================================================= #
141
+ APPEND_THIS = '[]'
142
+
143
+ # ========================================================================= #
144
+ # === ARRAY_REGISTERED_CURRICULA
145
+ #
146
+ # All curricula should be registered here, as an Array of Symbols.
147
+ #
148
+ # Only list these curricula ONCE.
149
+ #
150
+ # This allows us to make use of that information, for example when
151
+ # displaying statistics about these curricula.
152
+ #
153
+ # Note that the following constant also includes aggregate
154
+ # curricula, such as bachelor_master_vektoren. If you need
155
+ # a method that returns only the non-standalone curricula,
156
+ # you can use the method defined after the following constant.
157
+ # ========================================================================= #
158
+ ARRAY_REGISTERED_CURRICULA = %i(
159
+
160
+ bachelor_master_vektoren
161
+
162
+ bachelor_vector
163
+ bachelor_genetics
164
+ bachelor_molekulare_biologie
165
+ bachelor_lmbt
166
+ bachelor_agrarwissenschaften
167
+ bachelor_botanik
168
+ bachelor_informatik
169
+ bachelor_medizinische_informatik
170
+ bachelor_technische_chemie
171
+ bachelor_chemie
172
+ bachelor_pharmazie
173
+ bachelor_molekularbiologie_graz
174
+ bachelor_nutrition_science
175
+ bachelor_bioinformatik_und_molekulare_biotechnologie
176
+ bachelor_biologische_informatik
177
+ bachelor_dummy_curriculum
178
+
179
+ master_vector
180
+ master_immuno
181
+ master_molbio
182
+ master_bioinformatik
183
+ master_biotech
184
+ master_tu_vienna_biotechnology
185
+ master_genetik_und_entwicklungsbiologie
186
+ master_biologische_chemie
187
+ master_pharmazie
188
+
189
+ ) # bachelor_wirtschaftsinformatik
190
+ # bachelor_ubrm
191
+
192
+ # ========================================================================= #
193
+ # === Studium.return_registered_standalone_curricula
194
+ #
195
+ # We will remove the bachelor-master vektor curriculum from the
196
+ # Array that is returned by this method, mostly because it is
197
+ # an aggregated curriculum, rather than a single standalone
198
+ # one.
199
+ # ========================================================================= #
200
+ def self.return_registered_standalone_curricula
201
+ ARRAY_REGISTERED_CURRICULA - [:bachelor_master_vektoren]
202
+ end; self.instance_eval { alias registered_standalone_curricula return_registered_standalone_curricula } # === Studium.registered_standalone_curricula
203
+ self.instance_eval { alias available_curricula? return_registered_standalone_curricula } # === Studium.available_curricula?
204
+
205
+ # ========================================================================= #
206
+ # === FILE_DEFAULT_DELAY
207
+ #
208
+ # The following constant, and its aliases defined below, determines where
209
+ # to store the default delay for exam-questions to be used.
210
+ #
211
+ # This constant depends on the constant PROJECT_YAML_DIRECTORY, which
212
+ # is defined in the following file:
213
+ #
214
+ # studium/project/project_yaml_directory.rb
215
+ #
216
+ # ========================================================================= #
217
+ FILE_DEFAULT_DELAY = "#{PROJECT_YAML_DIRECTORY}default_delay.yml"
218
+ FILE_DELAY = FILE_DEFAULT_DELAY # === FILE_DELAY
219
+ DELAY_CONSTANT_STORED_HERE = FILE_DEFAULT_DELAY # === DELAY_CONSTANT_STORED_HERE
220
+
221
+ # ========================================================================= #
222
+ # === DEFAULT_DELAY
223
+ # ========================================================================= #
224
+ DEFAULT_DELAY = 3.0
225
+
226
+ # ========================================================================= #
227
+ # === Studium::ONE_MINUTE
228
+ # ========================================================================= #
229
+ ONE_MINUTE = 60 # 60 seconds.
230
+
231
+ # ========================================================================= #
232
+ # === Studium::ONE_HOUR
233
+ # ========================================================================= #
234
+ ONE_HOUR = ONE_MINUTE * 60
235
+
236
+ # ========================================================================= #
237
+ # === Studium::ONE_DAY
238
+ # ========================================================================= #
239
+ ONE_DAY = ONE_HOUR * 24
240
+
241
+ # ========================================================================= #
242
+ # === Studium::TWO_DAYS
243
+ # ========================================================================= #
244
+ TWO_DAYS = ONE_DAY * 2
245
+
246
+ # ========================================================================= #
247
+ # === Studium::THREE_DAYS
248
+ # ========================================================================= #
249
+ THREE_DAYS = ONE_DAY * 3
250
+
251
+ # ========================================================================= #
252
+ # === Studium::FOUR_DAYS
253
+ # ========================================================================= #
254
+ FOUR_DAYS = ONE_DAY * 4
255
+
256
+ # ========================================================================= #
257
+ # === Studium::FIVE_DAYS
258
+ # ========================================================================= #
259
+ FIVE_DAYS = ONE_DAY * 5
260
+
261
+ # ========================================================================= #
262
+ # === Studium::SIX_DAYS
263
+ # ========================================================================= #
264
+ SIX_DAYS = ONE_DAY * 6
265
+
266
+ # ========================================================================= #
267
+ # === RUBY_SRC_DIR
268
+ #
269
+ # Hardcoded path - but only relevant for my home system.
270
+ # ========================================================================= #
271
+ RUBY_SRC_DIR = "#{USERS_X}programming/ruby/src/"
272
+
273
+ # ========================================================================= #
274
+ # === RUBY_SRC_STUDIUM
275
+ #
276
+ # This constant may point to e. g.:
277
+ #
278
+ # /home/x/DATA/PROGRAMMING_LANGUAGES/RUBY/src/studium/
279
+ #
280
+ # ========================================================================= #
281
+ RUBY_SRC_STUDIUM = "#{RUBY_SRC_DIR}studium/"
282
+
283
+ # ========================================================================= #
284
+ # === RUBY_SRC_STUDIUM_LIB
285
+ #
286
+ # As above, but with a trailin 'lib/' part.
287
+ # ========================================================================= #
288
+ RUBY_SRC_STUDIUM_LIB = "#{RUBY_SRC_STUDIUM}lib/"
289
+
290
+ # ========================================================================= #
291
+ # === FILE_DAILY_QUESTIONS_SOLVED
292
+ #
293
+ # This constant denotes where the file "daily_questions_solved.yml" is
294
+ # to be stored. On my home system, this will make use of a different
295
+ # path, hence why there is a check. The reason for this is because
296
+ # I regularly back this file up, so that I can compare results over
297
+ # different years more easily.
298
+ # ========================================================================= #
299
+ if ::Studium.is_on_roebe?
300
+ FILE_DAILY_QUESTIONS_SOLVED =
301
+ "#{RUBY_SRC_STUDIUM_LIB}studium/yaml/daily_questions_solved.yml"
302
+ else # else use this default
303
+ FILE_DAILY_QUESTIONS_SOLVED =
304
+ "#{::Studium.log_dir?}daily_questions_solved.yml"
305
+ end
306
+
307
+ # ========================================================================= #
308
+ # === FILE_EXAMS
309
+ #
310
+ # The path to my exams-file. You could in principle modify this if
311
+ # you want to use your own exams file.
312
+ #
313
+ # On my home system, this constant will point at:
314
+ #
315
+ # /home/x/STUDIUM/YAML/exams.yml
316
+ #
317
+ # ========================================================================= #
318
+ FILE_EXAMS = "#{Studium.yaml_dir?}exams.yml"
319
+ ALL_EXAMS_FILE = FILE_EXAMS # === ALL_EXAMS_FILE
320
+
321
+ # ========================================================================= #
322
+ # === @file_exams
323
+ # ========================================================================= #
324
+ @file_exams = FILE_EXAMS
325
+
326
+ # ========================================================================= #
327
+ # === Studium.file_exams?
328
+ # ========================================================================= #
329
+ def self.file_exams?
330
+ @file_exams
331
+ end
332
+
333
+ # ========================================================================= #
334
+ # === Studium.set_file_exams
335
+ #
336
+ # This setter allows you to use another exams-file, other than 'exams.yml'.
337
+ # ========================================================================= #
338
+ def self.set_file_exams(i = FILE_EXAMS)
339
+ @file_exams = i
340
+ end
341
+
342
+ # ========================================================================= #
343
+ # Internal local, temporary variable, just so that we can setup some
344
+ # other constants more readily.
345
+ # ========================================================================= #
346
+ log_dir = Studium.log_dir?
347
+
348
+ # ========================================================================= #
349
+ # === FILE_TEN_ALIASES_YML
350
+ # ========================================================================= #
351
+ FILE_TEN_ALIASES_YML =
352
+ "#{log_dir?}ten_aliases.yml"
353
+
354
+ # ========================================================================= #
355
+ # === FILE_TWENTY_ALIASES_YML
356
+ # ========================================================================= #
357
+ FILE_TWENTY_ALIASES_YML =
358
+ "#{log_dir?}twenty_aliases.yml"
359
+
360
+ # ========================================================================= #
361
+ # === FILE_EXAM_TOPICS_ARCHIVE
362
+ # ========================================================================= #
363
+ FILE_EXAM_TOPICS_ARCHIVE = 'exam_topics.tar.xz'
364
+
365
+ # ========================================================================= #
366
+ # === FILE_N_TOTAL_QUESTIONS
367
+ #
368
+ # This constant may expand into e. g.
369
+ #
370
+ # "/Programs/Ruby/2.3.1/lib/ruby/site_ruby/2.3.0/studium/yaml/n_total_questions.yml"
371
+ #
372
+ # ========================================================================= #
373
+ FILE_N_TOTAL_QUESTIONS =
374
+ "#{yaml_directory?}n_total_questions.yml"
375
+
376
+ # ========================================================================= #
377
+ # === FILE_EDITOR
378
+ # ========================================================================= #
379
+ FILE_EDITOR = "#{yaml_directory?}editor.yml"
380
+
381
+ # ========================================================================= #
382
+ # === USE_THIS_EDITOR
383
+ #
384
+ # The main editor for use in the project. This setting can be overruled
385
+ # on the commandline.
386
+ # ========================================================================= #
387
+ if File.exist? FILE_EDITOR
388
+ USE_THIS_EDITOR = YAML.load_file(FILE_EDITOR)
389
+ else
390
+ USE_THIS_EDITOR = 'bluefish'
391
+ end
392
+
393
+ # ========================================================================= #
394
+ # === Studium::ARRAY_LECTURE_TYPES_THAT_ARE_MANDATORY_CONTINUOUS_ASSESSMENT
395
+ #
396
+ # Alle prüfungsimmanenten Lehrveranstaltungen (courses with "mandatory
397
+ # presence") werden im folgenden Array gesammelt.
398
+ #
399
+ # PS stands for "Projektarbeit", aka "Bachelorarbeiten" usually.
400
+ #
401
+ # "SK" stands for seminar+praktikum, aka seminar-presentation and
402
+ # practical course work.
403
+ #
404
+ # Please use a new line for every individual entry in the following
405
+ # constant.
406
+ # ========================================================================= #
407
+ ARRAY_LECTURE_TYPES_THAT_ARE_MANDATORY_CONTINUOUS_ASSESSMENT = %w(
408
+ UE
409
+ SE
410
+ KV
411
+ EX
412
+ SK
413
+ LU
414
+ VU
415
+ PA
416
+ PJ
417
+ PP
418
+ PR
419
+ PS
420
+ KO
421
+ KU
422
+ KV
423
+ VS
424
+ VX
425
+ OL
426
+ VL
427
+ VO+UE
428
+ SE+UE
429
+ VO+SE
430
+ )
431
+
432
+ # ========================================================================= #
433
+ # === LAST_SAVED_INTO_THIS_FILE
434
+ # ========================================================================= #
435
+ LAST_SAVED_INTO_THIS_FILE = "#{log_dir?}last_saved_into_this_file.md"
436
+ FILE_LAST_SAVED_INTO_THIS_FILE = LAST_SAVED_INTO_THIS_FILE
437
+
438
+ # ========================================================================= #
439
+ # === MAKE_USE_OF_UNICODE_SYMBOLS_WHENEVER_POSSIBLE
440
+ #
441
+ # The following constant determines whether we will make use of
442
+ # Unicode symbols when that is possible, on the commandline.
443
+ #
444
+ # Unicode symbols in this context primarily refer to the unicode-checkmark
445
+ # "icon".
446
+ # ========================================================================= #
447
+ MAKE_USE_OF_UNICODE_SYMBOLS_WHENEVER_POSSIBLE = true
448
+
449
+ # ========================================================================= #
450
+ # === Studium.shall_we_make_use_of_unicode_symbols?
451
+ # ========================================================================= #
452
+ def self.shall_we_make_use_of_unicode_symbols?
453
+ MAKE_USE_OF_UNICODE_SYMBOLS_WHENEVER_POSSIBLE
454
+ end
455
+
456
+ # ========================================================================= #
457
+ # === Studium::ARRAY_GERMAN_WEEKDAYS
458
+ #
459
+ # All weekdays. This one is kept in german, though.
460
+ # ========================================================================= #
461
+ ARRAY_GERMAN_WEEKDAYS = %w(
462
+ Montag
463
+ Dienstag
464
+ Mittwoch
465
+ Donnerstag
466
+ Freitag
467
+ Samstag
468
+ Sonntag
469
+ ); ARRAY_WEEKDAYS = ARRAY_GERMAN_WEEKDAYS # === ARRAY_WEEKDAYS
470
+
471
+ # ========================================================================= #
472
+ # === Studium::HASH_SHORT_TO_LONG_WEEKDAYS
473
+ # ========================================================================= #
474
+ HASH_SHORT_TO_LONG_WEEKDAYS = {
475
+ 'Mon' => 'Monday',
476
+ 'Tue' => 'Tuesday',
477
+ 'Wed' => 'Wednesday',
478
+ 'Thu' => 'Thursday',
479
+ 'Fri' => 'Friday',
480
+ 'Sat' => 'Saturday',
481
+ 'Sun' => 'Sunday'
482
+ }
483
+
484
+ # ========================================================================= #
485
+ # === Studium::ENGLISH_TO_GERMAN_WEEKDAYS
486
+ # ========================================================================= #
487
+ ENGLISH_TO_GERMAN_WEEKDAYS = {
488
+ 'Monday' => 'Montag',
489
+ 'Tuesday' => 'Dienstag',
490
+ 'Wednesday' => 'Mittwoch',
491
+ 'Thursday' => 'Donnerstag',
492
+ 'Friday' => 'Freitag',
493
+ 'Saturday' => 'Samstag',
494
+ 'Sunday' => 'Sonntag'
495
+ }
496
+
497
+ # ========================================================================= #
498
+ # === GERMAN_TO_ENGLISH_WEEKDAYS
499
+ # ========================================================================= #
500
+ GERMAN_TO_ENGLISH_WEEKDAYS = ENGLISH_TO_GERMAN_WEEKDAYS.invert
501
+
502
+ # ========================================================================= #
503
+ # === ARRAY_ENGLISH_WEEKDAYS
504
+ # ========================================================================= #
505
+ ARRAY_ENGLISH_WEEKDAYS = ENGLISH_TO_GERMAN_WEEKDAYS.keys
506
+
507
+ # ========================================================================= #
508
+ # === EXAMS_RESULT
509
+ #
510
+ # This is a constant solely for my home-setup. Other users will not
511
+ # need this constant.
512
+ # ========================================================================= #
513
+ EXAMS_RESULT = "#{ROEBE_STUDIUM_DIR}EXAMS_RESULT/"
514
+
515
+ # ========================================================================= #
516
+ # === REGEX_FOR_PWD_STUD
517
+ #
518
+ # This is the regex that will extract the proper pwdstud entry from
519
+ # the file cd_aliases.yml.
520
+ # ========================================================================= #
521
+ REGEX_FOR_PWD_STUD =
522
+ /^pwdstud\d{1}.+$/
523
+
524
+ # ========================================================================= #
525
+ # === REGEX_FOR_BOKU_EXAMS
526
+ # ========================================================================= #
527
+ REGEX_FOR_BOKU_EXAMS =
528
+ /pStpSpNr=(\d+)/
529
+
530
+ # ========================================================================= #
531
+ # === REGEX_FOR_OPENING_AND_CLOSING_COLOUR_TAGS
532
+ #
533
+ # See: https://rubular.com/r/s8ur8ca1XjLXlg
534
+ # ========================================================================= #
535
+ REGEX_FOR_OPENING_AND_CLOSING_COLOUR_TAGS =
536
+ /<[\/()a-zA-Z]+?>/
537
+
538
+ # ========================================================================= #
539
+ # === SCI
540
+ # ========================================================================= #
541
+ if ENV['SCI'] # This here would not work in .cgi environments.
542
+ SCI = "#{ENV['SCI']}/"
543
+ else # Hence we hardcode a safe default.
544
+ SCI = "#{USERS_X}DATA/science/"
545
+ end
546
+
547
+ # ========================================================================= #
548
+ # === REMOTE_PERSONAL_WEBSITE_URL
549
+ #
550
+ # My remote personal website.
551
+ # ========================================================================= #
552
+ REMOTE_PERSONAL_WEBSITE_URL = 'http://shevy.bplaced.net/'
553
+
554
+ # ========================================================================= #
555
+ # === Studium::RUBY_STUDIUM_HOME_DIR
556
+ #
557
+ # This constant is useful only for my setup at home.
558
+ #
559
+ # It may point to a path such as this one here:
560
+ #
561
+ # /home/x/programming/ruby/src/studium/lib/studium/
562
+ #
563
+ # ========================================================================= #
564
+ if ENV['RUBY_STUDIUM']
565
+ RUBY_STUDIUM_HOME_DIR = "#{ENV['RUBY_STUDIUM']}/".squeeze('/')
566
+ else # for .cgi like environments, we need to hardcode the directory.
567
+ RUBY_STUDIUM_HOME_DIR = "#{RUBY_SRC_DIR}studium/lib/studium/"
568
+ end
569
+
570
+ # ========================================================================= #
571
+ # === Studium.ruby_src_dir_at_home?
572
+ #
573
+ # This method will return a String such as:
574
+ #
575
+ # "/home/x/programming/ruby/src/"
576
+ #
577
+ # ========================================================================= #
578
+ def self.ruby_src_dir_at_home?
579
+ RUBY_SRC_DIR
580
+ end
581
+
582
+ # ========================================================================= #
583
+ # === FILE_SOMMERSEMESTER_LECTURES_AT_THE_UNIVERSITY_OF_VIENNA
584
+ #
585
+ # bl /Depot/Studium/sommersemester_lectures_at_the_university_of_vienna.yml
586
+ # ========================================================================= #
587
+ FILE_SOMMERSEMESTER_LECTURES_AT_THE_UNIVERSITY_OF_VIENNA =
588
+ "#{log_dir}sommersemester_lectures_at_the_university_of_vienna.yml"
589
+
590
+ # ========================================================================= #
591
+ # === Studium.file_max_stats
592
+ # ========================================================================= #
593
+ def self.file_max_stats
594
+ "#{PROJECT_YAML_DIRECTORY}max_stats.yml"
595
+ end
596
+
597
+ # ========================================================================= #
598
+ # === FILE_ALLOWED_THEMES_FOR_EXAMS
599
+ # ========================================================================= #
600
+ # FILE_ALLOWED_THEMES_FOR_EXAMS =
601
+ # "#{PROJECT_YAML_DIRECTORY}allowed_themes_for_exams.yml"
602
+
603
+ # ========================================================================= #
604
+ # === Studium.file_array_allowed_entries_for_the_file_lecture_information
605
+ #
606
+ # This method will return a path such as the following one:
607
+ #
608
+ # /home/Programs/Ruby/2.7.1/lib/ruby/site_ruby/2.7.0/studium/yaml/lecture_aliases.yml
609
+ #
610
+ # ========================================================================= #
611
+ def self.file_array_allowed_entries_for_the_file_lecture_information
612
+ "#{PROJECT_YAML_DIRECTORY}"\
613
+ "array_allowed_entries_for_the_file_lecture_information.yml"
614
+ end
615
+
616
+ # ========================================================================= #
617
+ # === BOKU_WIEN_DIR
618
+ #
619
+ # This is just for my personal home directory setup.
620
+ # ========================================================================= #
621
+ BOKU_WIEN_DIR = "#{ROEBE_STUDIUM_DIR}BOKU_WIEN/"
622
+ ROEBE_BOKU_WIEN = BOKU_WIEN_DIR # === ROEBE_BOKU_WIEN
623
+
624
+ # ========================================================================= #
625
+ # === Studium::ROEBE_BOKU_WIEN_YAML
626
+ # ========================================================================= #
627
+ ROEBE_BOKU_WIEN_YAML = "#{ROEBE_BOKU_WIEN}yaml/"
628
+
629
+ # ========================================================================= #
630
+ # === FILE_BACHELOR_MASTER_BOKU_MOLEKULARE_BIOTECHNOLOGIE_UND_BIOINFORMATIK
631
+ #
632
+ # This entry point is for an individual curriculum.
633
+ # ========================================================================= #
634
+ FILE_BACHELOR_MASTER_BOKU_MOLEKULARE_BIOTECHNOLOGIE_UND_BIOINFORMATIK =
635
+ "#{ROEBE_BOKU_WIEN_YAML}"\
636
+ "bachelor/bachelor_master_molekulare_biotechnologie_und_bioinformatik.yml"
637
+
638
+ # ========================================================================= #
639
+ # === FILE_BACHELOR_BOKU_INDIVIDUELLES_CURRICULUM_BIOINFORMATIK_UND_BIOANALYTIK
640
+ # ========================================================================= #
641
+ FILE_BACHELOR_BOKU_INDIVIDUELLES_CURRICULUM_BIOINFORMATIK_UND_BIOANALYTIK =
642
+ "#{ROEBE_BOKU_WIEN_YAML}"\
643
+ "bachelor/bachelor_individuelles_curriculum_bio_informatik_und_molekulare_biotechnologie_mit_den_schwerpunkten_immunobiotechnologe_und_agrarbiotechnologie.yml"
644
+
645
+ # ========================================================================= #
646
+ # === FILE_MASTER_BOKU_INDIVIDUELLES_CURRICULUM_BIOINFORMATIK_UND_BIOANALYTIK
647
+ # ========================================================================= #
648
+ FILE_MASTER_BOKU_INDIVIDUELLES_CURRICULUM_BIOINFORMATIK_UND_BIOANALYTIK =
649
+ "#{ROEBE_BOKU_WIEN_YAML}individual/"\
650
+ "master_individuelles_curriculum_bio_informatik_und_molekulare_biotechnologie_mit_den_schwerpunkten_immunobiotechnologe_und_agrarbiotechnologie.yml"
651
+
652
+ # ========================================================================= #
653
+ # === Studium.file_master_bioinformatics_and_nanobiotechnology_in_molecular_medicine
654
+ #
655
+ # This is at the BOKU.
656
+ # ========================================================================= #
657
+ def self.file_master_bioinformatics_and_nanobiotechnology_in_molecular_medicine
658
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}individual/"\
659
+ "master_bioinformatics_and_nanobiotechnology_in_molecular_medicine.yml"
660
+ end
661
+
662
+ # ========================================================================= #
663
+ # === Studium.file_passed_exams_per_month
664
+ # ========================================================================= #
665
+ def self.file_passed_exams_per_month
666
+ '/home/x/studium/YAML/passed_exams_per_month.csv'
667
+ end
668
+
669
+ # ========================================================================= #
670
+ # === TU_WIEN_DIR
671
+ # ========================================================================= #
672
+ TU_WIEN_DIR = "#{ROEBE_STUDIUM_DIR}TU_WIEN/"
673
+
674
+ # ========================================================================= #
675
+ # === Studium::ROEBE_TU_WIEN_YAML
676
+ # ========================================================================= #
677
+ ROEBE_TU_WIEN_YAML = "#{TU_WIEN_DIR}yaml/"
678
+
679
+ # ========================================================================= #
680
+ # === FILE_BACHELOR_MASTER_TU_WIEN_INDIVIDUELLES_STUDIUM
681
+ # ========================================================================= #
682
+ FILE_BACHELOR_MASTER_TU_WIEN_INDIVIDUELLES_STUDIUM =
683
+ "#{ROEBE_TU_WIEN_YAML}"\
684
+ "bachelor/bachelor_master_individuelles_studium_noch_ohne_namen_an_der_TU_Wien.yml"
685
+
686
+ # ========================================================================= #
687
+ # === Studium.file_holidays
688
+ #
689
+ # The holidays.yml file keeps track of holidays at different
690
+ # universities in Austria.
691
+ # ========================================================================= #
692
+ def self.file_holidays
693
+ "#{PROJECT_YAML_DIRECTORY}holidays.yml"
694
+ end
695
+
696
+ # ========================================================================= #
697
+ # === Studium.file_grouped_themes
698
+ # ========================================================================= #
699
+ def self.file_grouped_themes
700
+ "#{Studium.yaml_directory?}grouped_themes.yml"
701
+ end
702
+
703
+ # ========================================================================= #
704
+ # === FILE_BACHELOR_MOLEKULARE_BIOLOGIE
705
+ #
706
+ # This is the bachelor-curriculum part for "molekulare biologie" in
707
+ # Vienna.
708
+ # ========================================================================= #
709
+ FILE_BACHELOR_MOLEKULARE_BIOLOGIE =
710
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
711
+ "bachelor/bachelor_biologie_molekulare_biologie_033630.yml"
712
+ UNIWIEN_BACHELOR_MOLEKULARE_BIOLOGIE = FILE_BACHELOR_MOLEKULARE_BIOLOGIE
713
+
714
+ # ========================================================================= #
715
+ # === FILE_MASTER_MOLEKULARE_BIOLOGIE
716
+ #
717
+ # The curriculum number for the master molecular biology is 066834.
718
+ # ========================================================================= #
719
+ FILE_MASTER_MOLEKULARE_BIOLOGIE =
720
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
721
+ "master/master_molekulare_biologie_066834.yml"
722
+ UNIWIEN_MASTER_MOLEKULARE_BIOLOGIE = FILE_MASTER_MOLEKULARE_BIOLOGIE # === UNIWIEN_MASTER_MOLEKULARE_BIOLOGIE
723
+ FILE_MASTER_MOLBIO = FILE_MASTER_MOLEKULARE_BIOLOGIE # === FILE_MASTER_MOLBIO
724
+
725
+ # ========================================================================= #
726
+ # === FILE_MASTER_IMMUNBIOLOGIE
727
+ #
728
+ # This is the main immunobiologie master, in vienna. The curriculum
729
+ # number is 066830.
730
+ # ========================================================================= #
731
+ FILE_MASTER_IMMUNBIOLOGIE =
732
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
733
+ "master/master_biologie_molekulare_mikrobiologie_mikrobielle_oekologie_und_immunbiologie_066830.yml"
734
+ UNIWIEN_MASTER_IMMUNBIOLOGIE = FILE_MASTER_IMMUNBIOLOGIE # === UNIWIEN_MASTER_IMMUNBIOLOGIE
735
+ FILE_MASTER_IMMUNO = FILE_MASTER_IMMUNBIOLOGIE # === FILE_MASTER_IMMUNO
736
+ FILE_MASTER_IMMUNOBIOLOGY_CURRICULUM = FILE_MASTER_IMMUNBIOLOGIE # === FILE_MASTER_IMMUNOBIOLOGY_CURRICULUM
737
+
738
+ # ========================================================================= #
739
+ # === FILE_BACHELOR_LMBT
740
+ #
741
+ # This is the curriculum for the BOKU "Lebensmittel- und Biotechnologie".
742
+ # ========================================================================= #
743
+ FILE_BACHELOR_LMBT =
744
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
745
+ "bachelor/bachelor_lmbt_033217.yml"
746
+ BOKU_BACHELOR_LMBT_CURRICULUM = FILE_BACHELOR_LMBT # === BOKU_BACHELOR_LMBT_CURRICULUM
747
+ FILE_BACHELOR_BOKU_LMBT = FILE_BACHELOR_LMBT # === FILE_BACHELOR_BOKU_LMBT
748
+ FILE_BOKU_BACHELOR_LMBT_CURRICULUM = FILE_BACHELOR_LMBT # === FILE_BOKU_BACHELOR_LMBT_CURRICULUM
749
+
750
+ # ========================================================================= #
751
+ # === FILE_BACHELOR_BOTANIK
752
+ # ========================================================================= #
753
+ FILE_BACHELOR_BOTANIK =
754
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
755
+ "bachelor/bachelor_biologie_botanik_033630.yml"
756
+ UNIWIEN_BACHELOR_BOTANIK_BIOLOGIE = FILE_BACHELOR_BOTANIK # === UNIWIEN_BACHELOR_BOTANIK_BIOLOGIE
757
+ FILE_BACHELOR_BOTANIK_CURRICULUM = FILE_BACHELOR_BOTANIK # === FILE_BACHELOR_BOTANIK_CURRICULUM
758
+
759
+ # ========================================================================= #
760
+ # === FILE_UNIWIEN_MASTER_BIOINFORMATIK_CURRICULUM
761
+ # ========================================================================= #
762
+ FILE_UNIWIEN_MASTER_BIOINFORMATIK_CURRICULUM =
763
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
764
+ "master/master_bioinformatik_066875.yml"
765
+
766
+ # ========================================================================= #
767
+ # === FILE_BACHELOR_MEDIZINISCHE_INFORMATIK_CURRICULUM
768
+ # ========================================================================= #
769
+ FILE_BACHELOR_MEDIZINISCHE_INFORMATIK_CURRICULUM =
770
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
771
+ "bachelor/bachelor_medizinische_informatik_033533.yml"
772
+
773
+ # ========================================================================= #
774
+ # === FILE_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN
775
+ # ========================================================================= #
776
+ FILE_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN =
777
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
778
+ "bachelor/bachelor_nutrition_science_033638.yml"
779
+ FILE_BACHELOR_ERN = FILE_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN # === FILE_BACHELOR_ERN
780
+ UNI_WIEN_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN_CURRICULUM = FILE_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN # === UNI_WIEN_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN_CURRICULUM
781
+ FILE_UNI_WIEN_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN_CURRICULUM = FILE_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN # === FILE_UNI_WIEN_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN_CURRICULUM
782
+
783
+ # ========================================================================= #
784
+ # === FILE_BACHELOR_ECOLOGY (ecology tag)
785
+ # ========================================================================= #
786
+ FILE_BACHELOR_ECOLOGY =
787
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
788
+ "bachelor/bachelor_biologie_ecology_033630.yml"
789
+
790
+ # ========================================================================= #
791
+ # === FILE_MASTER_GENETIK_UND_ENTWICKLUNGSBIOLOGIE
792
+ #
793
+ # Has the number 066877.
794
+ # ========================================================================= #
795
+ FILE_MASTER_GENETIK_UND_ENTWICKLUNGSBIOLOGIE =
796
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
797
+ "master/master_genetik_und_entwicklungsbiologie_066877.yml"
798
+ FILE_MASTER_GENETIK_UND_ENTWICKLUNGSBIOLOGIE_CURRICULUM = FILE_MASTER_GENETIK_UND_ENTWICKLUNGSBIOLOGIE
799
+
800
+ # ========================================================================= #
801
+ # === FILE_ALL_REGISTERED_UPCOMING_EXAMS
802
+ #
803
+ # The path may be like this:
804
+ #
805
+ # /root/Studium/all_registered_upcoming_exams.yml
806
+ #
807
+ # ========================================================================= #
808
+ FILE_ALL_REGISTERED_UPCOMING_EXAMS =
809
+ "#{log_dir?}all_registered_upcoming_exams.yml"
810
+
811
+ # ========================================================================= #
812
+ # === Studium.file_all_registered_upcoming_exams
813
+ #
814
+ # In the long run this method should replace the constant called
815
+ # FILE_ALL_REGISTERED_UPCOMING_EXAMS.
816
+ # ========================================================================= #
817
+ def self.file_all_registered_upcoming_exams(
818
+ use_this_as_log_dir = log_dir?
819
+ )
820
+ "#{use_this_as_log_dir}all_registered_upcoming_exams.yml"
821
+ end
822
+
823
+ # ========================================================================= #
824
+ # === FILE_MASTER_LMBT
825
+ # ========================================================================= #
826
+ FILE_MASTER_LMBT =
827
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
828
+ "master/master_lmbt_066418.yml"
829
+ BOKU_MASTER_LMBT_CURRICULUM = FILE_MASTER_LMBT # === BOKU_MASTER_LMBT_CURRICULUM
830
+ FILE_BOKU_MASTER_LMBT = FILE_MASTER_LMBT # === FILE_BOKU_MASTER_LMBT
831
+ FILE_MASTER_LMBT_CURRICULUM = FILE_MASTER_LMBT # === FILE_MASTER_LMBT_CURRICULUM
832
+
833
+ # ========================================================================= #
834
+ # === FILE_BACHELOR_BOKU_UBRM
835
+ #
836
+ # This is for the UBRM Bachelorcurriculum at the BOKU.
837
+ # ========================================================================= #
838
+ FILE_BACHELOR_BOKU_UBRM =
839
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
840
+ "bachelor/bachelor_ubrm_033227.yml"
841
+ FILE_BACHELOR_UBRM = FILE_BACHELOR_BOKU_UBRM # === FILE_BACHELOR_UBRM
842
+ FILE_BACHELOR_UBRM_CURRICULUM = FILE_BACHELOR_BOKU_UBRM # === FILE_BACHELOR_UBRM_CURRICULUM
843
+
844
+ # ========================================================================= #
845
+ # === BOKU_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM
846
+ #
847
+ # This is the AW curriculum at the BOKU.
848
+ # ========================================================================= #
849
+ FILE_BOKU_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM =
850
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
851
+ "bachelor/bachelor_agrarwissenschaften_033255.yml"
852
+ BOKU_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM = FILE_BOKU_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM # === BOKU_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM
853
+ BOKU_BACHELOR_AW_CURRICULUM = FILE_BOKU_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM # === BOKU_BACHELOR_AW_CURRICULUM
854
+ FILE_BACHELOR_AGRARWISSENSCHAFTEN = FILE_BOKU_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM # === FILE_BACHELOR_AGRARWISSENSCHAFTEN
855
+ FILE_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM = FILE_BOKU_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM # === FILE_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM
856
+
857
+ # ========================================================================= #
858
+ # === FILE_BACHELOR_INFORMATIK_CURRICULUM
859
+ # ========================================================================= #
860
+ FILE_BACHELOR_INFORMATIK_CURRICULUM =
861
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
862
+ "bachelor/bachelor_informatik_033521.yml"
863
+
864
+ # ========================================================================= #
865
+ # === FILE_MASTER_BIOLOGISCHE_CHEMIE_CURRICULUM
866
+ # ========================================================================= #
867
+ FILE_MASTER_BIOLOGISCHE_CHEMIE_CURRICULUM =
868
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
869
+ "master/master_biologische_chemie_066863.yml"
870
+
871
+ # ========================================================================= #
872
+ # === FILE_MASTER_PHARMAZIE
873
+ #
874
+ # This constant is for the master-curriculum pharmacy, at the
875
+ # University of Vienna.
876
+ # ========================================================================= #
877
+ FILE_MASTER_PHARMAZIE =
878
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
879
+ "master/master_pharmazie_066605.yml"
880
+ UNIWIEN_MASTER_PHARMAZIE = FILE_MASTER_PHARMAZIE # === UNIWIEN_MASTER_PHARMAZIE
881
+ FILE_MASTER_PHARMAZIE_CURRICULUM = FILE_MASTER_PHARMAZIE # === FILE_MASTER_PHARMAZIE_CURRICULUM
882
+
883
+ # ========================================================================= #
884
+ # === FILE_BACHELOR_CHEMIE_CURRICULUM
885
+ # ========================================================================= #
886
+ FILE_BACHELOR_CHEMIE_CURRICULUM =
887
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
888
+ "bachelor/bachelor_chemie_033662.yml"
889
+ UNI_WIEN_BACHELOR_CHEMIE_CURRICULUM = FILE_BACHELOR_CHEMIE_CURRICULUM # === UNI_WIEN_BACHELOR_CHEMIE_CURRICULUM
890
+ FILE_BACHELOR_UNI_WIEN_CHEMISTRY = FILE_BACHELOR_CHEMIE_CURRICULUM # === FILE_BACHELOR_UNI_WIEN_CHEMISTRY
891
+ FILE_UNI_WIEN_BACHELOR_CHEMIE_CURRICULUM = FILE_BACHELOR_CHEMIE_CURRICULUM # === FILE_UNI_WIEN_BACHELOR_CHEMIE_CURRICULUM
892
+
893
+ # ========================================================================= #
894
+ # === FILE_BACHELOR_PHARMAZIE
895
+ # ========================================================================= #
896
+ FILE_BACHELOR_PHARMAZIE =
897
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
898
+ "bachelor/bachelor_pharmazie_033305.yml"
899
+ UNIWIEN_BACHELOR_PHARMAZIE = FILE_BACHELOR_PHARMAZIE # === UNIWIEN_BACHELOR_PHARMAZIE
900
+ FILE_BACHELOR_PHARMAZIE_CURRICULUM = FILE_BACHELOR_PHARMAZIE # === FILE_BACHELOR_PHARMAZIE_CURRICULUM
901
+
902
+ # ========================================================================= #
903
+ # === FILE_BACHELOR_GENETIK
904
+ #
905
+ # This constant has a few "aliases".
906
+ # ========================================================================= #
907
+ FILE_BACHELOR_GENETIK =
908
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
909
+ "bachelor/bachelor_biologie_mikrobiologie_und_genetik_033630.yml"
910
+ UNIWIEN_BACHELOR_MIKROBIOLOGIE_UND_GENETIK_BIOLOGIE = FILE_BACHELOR_GENETIK
911
+ FILE_BACHELOR_BIOLOGIE_MIKROBIOLOGIE_UND_GENETIK = FILE_BACHELOR_GENETIK
912
+
913
+ # ========================================================================= #
914
+ # === FILE_TUWIEN_MASTER_BIOTECHNOLOGY_CURRICULUM
915
+ # ========================================================================= #
916
+ FILE_TUWIEN_MASTER_BIOTECHNOLOGY_CURRICULUM =
917
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
918
+ "master/master_technische_chemie_066490.yml"
919
+ TUWIEN_MASTER_BIOTECHNOLOGY = FILE_TUWIEN_MASTER_BIOTECHNOLOGY_CURRICULUM
920
+ FILE_MASTER_TUVIENNA_BIOTECHNOLOGY = FILE_TUWIEN_MASTER_BIOTECHNOLOGY_CURRICULUM
921
+
922
+ # ========================================================================= #
923
+ # === FILE_LAST_RECORDED_START_TIME
924
+ # ========================================================================= #
925
+ FILE_LAST_RECORDED_START_TIME =
926
+ "#{Studium.log_dir?}last_recorded_start_time.md"
927
+
928
+ # ========================================================================= #
929
+ # === FILE_BACHELOR_TECHNISCHE_CHEMIE_CURRICULUM
930
+ # ========================================================================= #
931
+ FILE_BACHELOR_TECHNISCHE_CHEMIE_CURRICULUM =
932
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
933
+ "bachelor/bachelor_technische_chemie_033290.yml"
934
+
935
+ # ========================================================================= #
936
+ # === FILE_BACHELOR_VERFAHRENSTECHNIK_CURRICULUM
937
+ # ========================================================================= #
938
+ FILE_BACHELOR_VERFAHRENSTECHNIK_CURRICULUM =
939
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
940
+ "bachelor/bachelor_verfahrenstechnik_033273.yml"
941
+
942
+ # ========================================================================= #
943
+ # === FILE_BACHELOR_MOLEKULARBIOLOGIE_GRAZ_CURRICULUM
944
+ # ========================================================================= #
945
+ FILE_BACHELOR_MOLEKULARBIOLOGIE_GRAZ_CURRICULUM =
946
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
947
+ "bachelor/bachelor_molekularbiologie_033665.yml"
948
+
949
+ # ========================================================================= #
950
+ # === ROEBE_FILE_RENAME_KONSOLE_TAB
951
+ #
952
+ # Hardcoded path since this is only used on my home system.
953
+ # ========================================================================= #
954
+ ROEBE_FILE_RENAME_KONSOLE_TAB =
955
+ "#{RUBY_STUDIUM_HOME_DIR}yaml/rename_konsole_tab.yml"
956
+
957
+ # ========================================================================= #
958
+ # === FILE_RENAME_KONSOLE_TAB
959
+ #
960
+ # This constant specifies the path to the file that controls
961
+ # as to whether we will rename the KDE konsole tab or
962
+ # whether we will not.
963
+ # ========================================================================= #
964
+ FILE_RENAME_KONSOLE_TAB =
965
+ "#{PROJECT_YAML_DIRECTORY}rename_konsole_tab.yml"
966
+
967
+ # ========================================================================= #
968
+ # === Studium.file_lecture_information?
969
+ #
970
+ # Note that a certain environment variable will always overrule the
971
+ # result of the following method.
972
+ # ========================================================================= #
973
+ def self.file_lecture_information?
974
+ # ======================================================================= #
975
+ # First check for the ENV variable STUDIUM_FILE_LECTURE_INFORMATION:
976
+ # ======================================================================= #
977
+ if ENV.has_key? 'STUDIUM_FILE_LECTURE_INFORMATION'
978
+ ENV['STUDIUM_FILE_LECTURE_INFORMATION'].dup
979
+ else
980
+ @file_lecture_information
981
+ end
982
+ end; self.instance_eval { alias file_lecture_information file_lecture_information? } # === Studium.file_lecture_information
983
+ self.instance_eval { alias lecture_information? file_lecture_information? } # === Studium.lecture_information
984
+
985
+ # ========================================================================= #
986
+ # === Studium.set_file_lecture_information
987
+ # ========================================================================= #
988
+ def self.set_file_lecture_information(
989
+ i = :default
990
+ )
991
+ case i
992
+ # ======================================================================= #
993
+ # === :default
994
+ # ======================================================================= #
995
+ when :default
996
+ i = ::Studium.yaml_directory?+
997
+ 'lecture_information/lecture_information.yml'
998
+ end
999
+ @file_lecture_information = i
1000
+ end
1001
+
1002
+ # ========================================================================= #
1003
+ # Assign to @file_lecture_information once, initially.
1004
+ # ========================================================================= #
1005
+ set_file_lecture_information(:default)
1006
+
1007
+ # ========================================================================= #
1008
+ # === FILE_BACKLOG_OF_EXAMS
1009
+ # ========================================================================= #
1010
+ FILE_BACKLOG_OF_EXAMS =
1011
+ "#{yaml_directory?}backlog_of_exams.yml"
1012
+
1013
+ # ========================================================================= #
1014
+ # === FILE_MAIN_TOPIC
1015
+ #
1016
+ # The main_topic.yml file contains our "afterburn" exam-topics.
1017
+ # ========================================================================= #
1018
+ FILE_MAIN_TOPIC =
1019
+ "#{yaml_directory?}main_topic.yml"
1020
+
1021
+ # ========================================================================= #
1022
+ # === FILE_STATISTICS
1023
+ #
1024
+ # This constant will point to e. g. the file
1025
+ # "studium/yaml/statistics.yml".
1026
+ # ========================================================================= #
1027
+ FILE_STATISTICS =
1028
+ "#{Studium.yaml_directory?}statistics/statistics.yml"
1029
+
1030
+ # ========================================================================= #
1031
+ # === FILE_UNIWIEN_BACHELOR_BASISBLOCK_BIOLOGIE
1032
+ # ========================================================================= #
1033
+ FILE_UNIWIEN_BACHELOR_BASISBLOCK_BIOLOGIE =
1034
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
1035
+ "bachelor/bachelor_biologie_basisblock_033630.yml"
1036
+ UNIWIEN_BACHELOR_BASISBLOCK_BIOLOGIE = FILE_UNIWIEN_BACHELOR_BASISBLOCK_BIOLOGIE
1037
+ FILE_BACHELOR_BIOLOGIE_BASISBLOCK = FILE_UNIWIEN_BACHELOR_BASISBLOCK_BIOLOGIE
1038
+
1039
+ # ========================================================================= #
1040
+ # === FILE_META_TOPICS_STATISTICS
1041
+ #
1042
+ # This file will keep track of the statistics for the meta-topics,
1043
+ # such as meta-genetics or meta-biochemistry. We will only store
1044
+ # the maximum values each, that is, how many questions were answered.
1045
+ #
1046
+ # The format for each entry in the .yml file will be:
1047
+ #
1048
+ # :meta_biochemistry = { n_questions: 4314, n_answers: 1345 }
1049
+ #
1050
+ # ========================================================================= #
1051
+ FILE_META_TOPICS_STATISTICS = "#{yaml_directory?}meta_topics_statistics.yml"
1052
+
1053
+ # ========================================================================= #
1054
+ # === FILE_BACHELOR_VEKTORX (vector tag, vektor tag)
1055
+ #
1056
+ # This is the bachelor-curriculum uniting Vektoren, Biotechnology
1057
+ # and Bioinformatics. It is the main entry point.
1058
+ # ========================================================================= #
1059
+ FILE_BACHELOR_VEKTORX =
1060
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}individual/"\
1061
+ "bachelor_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology"\
1062
+ ".yml"
1063
+ BACHELOR_MOLEKULARSIMULATORISCHE_VEKTOREN = FILE_BACHELOR_VEKTORX # === BACHELOR_MOLEKULARSIMULATORISCHE_VEKTOREN
1064
+ FILE_BACHELOR_VECTOR = FILE_BACHELOR_VEKTORX # === FILE_BACHELOR_VECTOR
1065
+ FILE_BACHELOR_VEKTORSYSTEME = FILE_BACHELOR_VEKTORX # === FILE_BACHELOR_VEKTORSYSTEME
1066
+ FILE_BACHELOR_MOLEKULARSIMULATORISCHE_VEKTOREN = FILE_BACHELOR_VEKTORX # === FILE_BACHELOR_MOLEKULARSIMULATORISCHE_VEKTOREN
1067
+ FILE_BACHELOR = FILE_BACHELOR_VEKTORX # === FILE_BACHELOR
1068
+ FILE_INDIVIDUAL_BACHELOR_CURRICULUM = FILE_BACHELOR_VEKTORX # === FILE_INDIVIDUAL_BACHELOR_CURRICULUM
1069
+ FILE_BACHELOR_VEKTOR_CURRICULUM = FILE_BACHELOR_VEKTORX # === FILE_BACHELOR_VEKTOR_CURRICULUM
1070
+
1071
+ # ========================================================================= #
1072
+ # === STUDIUM_YAML_DIRECTORY
1073
+ #
1074
+ # This constant depends on the constant STUDIUM_DIR.
1075
+ #
1076
+ # The value on my system will expand to:
1077
+ #
1078
+ # /home/x/studium/yaml/
1079
+ #
1080
+ # ========================================================================= #
1081
+ STUDIUM_YAML_DIRECTORY = "#{ROEBE_STUDIUM_DIR}YAML/"
1082
+
1083
+ # ========================================================================= #
1084
+ # === Studium.studium_at_home_dir?
1085
+ #
1086
+ # This method will return a String such as "/home/x/studium/".
1087
+ # ========================================================================= #
1088
+ def self.studium_at_home_dir?
1089
+ ROEBE_STUDIUM_DIR
1090
+ end; self.instance_eval { alias studium_directory_at_home studium_at_home_dir? } # === Studium.studium_directory_at_home
1091
+ self.instance_eval { alias studium_directory_at_home? studium_at_home_dir? } # === Studium.studium_directory_at_home?
1092
+
1093
+ # ========================================================================= #
1094
+ # === FILE_BROWSER
1095
+ # ========================================================================= #
1096
+ FILE_BROWSER = "#{USERS_X}programming/ruby/src/roebe/lib/roebe/yaml/browser.yml"
1097
+
1098
+ require 'studium/toplevel_methods/is_on_roebe.rb'
1099
+ # ========================================================================= #
1100
+ # === DEFAULT_BROWSER
1101
+ #
1102
+ # This constant determines which browser we will use. For most users
1103
+ # this may be hardcoded for the time being. If you want to ad-hoc
1104
+ # change this, either use the ENV variable BROWSER, or simply change
1105
+ # the hardcoded constant below (the last one).
1106
+ # ========================================================================= #
1107
+ if is_on_roebe? and File.exist?(FILE_BROWSER)
1108
+ require 'yaml'
1109
+ DEFAULT_BROWSER = YAML.load_file(FILE_BROWSER).strip
1110
+ elsif ENV.has_key?('BROWSER')
1111
+ DEFAULT_BROWSER = ENV['BROWSER'].to_s.dup
1112
+ else # else hardcoded it to palemoon.
1113
+ DEFAULT_BROWSER = 'palemoon'
1114
+ end
1115
+
1116
+ # ========================================================================= #
1117
+ # === Studium.file_allowed_themes_for_exams
1118
+ # ========================================================================= #
1119
+ def self.file_allowed_themes_for_exams
1120
+ "#{PROJECT_YAML_DIRECTORY}allowed_themes_for_exams.yml"
1121
+ end
1122
+
1123
+ # ========================================================================= #
1124
+ # === FILE_LECTURE_INFORMATION
1125
+ #
1126
+ # This is a hardcoded constant. It is better to not use it, though,
1127
+ # and instead use the toplevel instance variable called
1128
+ # @file_lecture_information. Since as of July 2022 this was deprecated;
1129
+ # it will be removed at a later time.
1130
+ # ========================================================================= #
1131
+ # FILE_LECTURE_INFORMATION = "#{PROJECT_YAML_DIRECTORY}lecture_information.yml"
1132
+
1133
+ # ========================================================================= #
1134
+ # === Studium.file_lecture_aliases
1135
+ # ========================================================================= #
1136
+ def self.file_lecture_aliases
1137
+ "#{PROJECT_YAML_DIRECTORY}lecture_aliases.yml"
1138
+ end
1139
+
1140
+ # ========================================================================= #
1141
+ # === Studium.file_last_question_asked?
1142
+ #
1143
+ # Note that this method will return a "dynamic" result, which allows
1144
+ # the user to use another log-directory.
1145
+ # ========================================================================= #
1146
+ def self.file_last_question_asked?(
1147
+ use_this_as_the_log_directory =
1148
+ log_dir?
1149
+ )
1150
+ "#{use_this_as_the_log_directory}last_question_asked.md"
1151
+ end; self.instance_eval { alias file_last_question_asked file_last_question_asked? } # === Studium.file_last_question_asked
1152
+
1153
+ # ========================================================================= #
1154
+ # === ROEBE_UNI_WIEN
1155
+ # ========================================================================= #
1156
+ ROEBE_UNI_WIEN =
1157
+ "#{ROEBE_STUDIUM_DIR}UNI_WIEN/"
1158
+ UNI_WIEN = ROEBE_UNI_WIEN # === UNI_WIEN
1159
+
1160
+ # ========================================================================= #
1161
+ # === ROEBE_UNI_WIEN_YAML
1162
+ # ========================================================================= #
1163
+ ROEBE_UNI_WIEN_YAML =
1164
+ "#{ROEBE_UNI_WIEN}yaml/"
1165
+
1166
+ # ========================================================================= #
1167
+ # === BOKU_N_ECTS_REGEX
1168
+ #
1169
+ # This regex can be used to determine the amount of ECTS points from
1170
+ # BOKU-lectures. This is presently used in at the least two different
1171
+ # rb.files.
1172
+ #
1173
+ # Also see:
1174
+ #
1175
+ # https://rubular.com/r/3hWI5p2f6G
1176
+ #
1177
+ # ========================================================================= #
1178
+ BOKU_N_ECTS_REGEX =
1179
+ /<span class="bold">(\d{1},?\d{0,1})<\/span> ECTS-Credits<\/td><\/tr>/
1180
+
1181
+ # ========================================================================= #
1182
+ # === Studium:.FILE_TODO_BOKU
1183
+ # ========================================================================= #
1184
+ FILE_TODO_BOKU =
1185
+ "#{ROEBE_STUDIUM_DIR}INDIVIDUELLE_STUDIEN/TODO_BOKU.md"
1186
+
1187
+ # ========================================================================= #
1188
+ # === Studium::TU_WIEN_N_ECTS_REGEX
1189
+ #
1190
+ # This regex can be used to determine the amount of ECTS points from
1191
+ # TU Wien-lectures.
1192
+ #
1193
+ # Also see:
1194
+ #
1195
+ # https://rubular.com/r/FVq4plPrTR
1196
+ #
1197
+ # ========================================================================= #
1198
+ TU_WIEN_N_ECTS_REGEX =
1199
+ /<li>ECTS: (\d+\.\d+)\s+<\/li>/
1200
+
1201
+ # ========================================================================= #
1202
+ # === Studium.file_important_exams?
1203
+ # ========================================================================= #
1204
+ def self.file_important_exams?
1205
+ "#{PROJECT_YAML_DIRECTORY}important_exams.yml"
1206
+ end; self.instance_eval { alias important_exams? file_important_exams? } # === Studium.important_exams
1207
+ self.instance_eval { alias file_important_exams file_important_exams? } # === Studium.file_important_exams
1208
+
1209
+ # ========================================================================= #
1210
+ # === Studium.csv_directory?
1211
+ #
1212
+ # Pointer to the csv/ subdirectory of the studium project.
1213
+ # ========================================================================= #
1214
+ def self.csv_directory?
1215
+ "#{::Studium.project_base_directory?}csv/"
1216
+ end
1217
+
1218
+ # ========================================================================= #
1219
+ # === Studium.return_file_for_this_curriculum
1220
+ #
1221
+ # This method will translate from the given input, which should be
1222
+ # a Symbol, to the file that will contain the actual curriculum
1223
+ # that we are searching for. Note that passing a String is ok,
1224
+ # but the default behaviour looks for a Symbol.
1225
+ #
1226
+ # Keep in mind that in the following case/when menu the most important
1227
+ # entry should come first, right after the "when " part.
1228
+ #
1229
+ # Since as of June 2022 it is recommended to avoid using the old
1230
+ # file-specific constants, and instead transition towards methods.
1231
+ # This is a more elegant solution in the long run, in my opinion.
1232
+ #
1233
+ # To test this, try:
1234
+ #
1235
+ # x = Studium.return_file_for_this_curriculum(:bachelor_ökologie_curriculum)
1236
+ # x = Studium.return_file_for_this_curriculum(:bachelor_vektor_curriculum)
1237
+ #
1238
+ # ========================================================================= #
1239
+ def self.return_file_for_this_curriculum(
1240
+ i = :bachelor_basisblock_biologie
1241
+ )
1242
+ if i.is_a? Array
1243
+ i = i.first
1244
+ end
1245
+ case i
1246
+ # ======================================================================= #
1247
+ # === :random
1248
+ # ======================================================================= #
1249
+ when :random
1250
+ i = ARRAY_REGISTERED_CURRICULA.sample
1251
+ end
1252
+ i = i.dup if i and i.is_a?(String)
1253
+ if i.is_a?(String) and !File.exist?(i)
1254
+ if i.start_with? '--'
1255
+ i.sub!(/^--/, '')
1256
+ end
1257
+ i.tr!(' ','_') if i.include? ' '
1258
+ i.tr!('-','_') if i.include? '-'
1259
+ i = i.to_sym unless i.include?('_') # We should work with a Symbol in most cases.
1260
+ end
1261
+ case i # case tag
1262
+ # ======================================================================= #
1263
+ # === :bachelor_informatik_und_biotechnologie_unter_berücksichtigung_immunanalytisch_molekularmedizinischer_aspekte
1264
+ #
1265
+ # This is the individual bachelor-curriculum at the BOKU.
1266
+ # ======================================================================= #
1267
+ when :bachelor_informatik_und_biotechnologie_unter_berücksichtigung_immunanalytisch_molekularmedizinischer_aspekte,
1268
+ :bachelor_bioinformatik_und_molekulare_biotechnologie,
1269
+ :bachelor_bioinformatik_und_biotechnologie,
1270
+ :bachelor_bioinformatik_an_der_boku,
1271
+ :indi2,
1272
+ /^-?-?indi2$/i,
1273
+ /^Bachelorcurriculum( |_|-)?\(?Bio\)?( |_|-)?Informatik( |_|-)?und( |_|-)?molekulare( |_|-)?Biotechnologie,( |_|-)?unter( |_|-)?Berücksichtigung( |_|-)?medizinisch( |_|-)?immunologischer( |_|-)?Aspekte$/i,
1274
+ /^\(?Bio\)?( |_|-)?Informatik( |_|-)?und( |_|-)?molekulare( |_|-)?Biotechnologie,( |_|-)?unter( |_|-)?Berücksichtigung( |_|-)?medizinisch( |_|-)?immunologischer( |_|-)?Aspekte$/i,
1275
+ /^Bachelorcurriculum( |_|-)?Informatik( |_|-)?und( |_|-)?Biotechnologie( |_|-)?unter( |_|-)?Berücksichtigung( |_|-)?immunanalytisch( |_|-)?molekularmedizinischer( |_|-)?Aspekte$/i
1276
+ FILE_BACHELOR_INFORMATIK_UND_BIOTECHNOLOGIE_UNTER_BERÜCKSICHTIGUNG_IMMUNANALYTISCH_MOLEKULARMEDIZINISCHER_ASPEKTE
1277
+ # ======================================================================= #
1278
+ # === :bachelor_informatik_curriculum,
1279
+ # ======================================================================= #
1280
+ when :bachelor_informatik_curriculum,
1281
+ :bachelor_informatik,
1282
+ :binformatik
1283
+ FILE_BACHELOR_INFORMATIK_CURRICULUM
1284
+ # ======================================================================= #
1285
+ # === :master_bioinformatics_and_nanobiotechnology_in_molecular_medicine
1286
+ #
1287
+ # This is the individual master-curriculum at the BOKU.
1288
+ # ======================================================================= #
1289
+ when :master_bioinformatics_and_nanobiotechnology_in_molecular_medicine,
1290
+ :master_bioinformatics_and_molecular_biotechnology,
1291
+ :master_bioinformatik_an_der_boku,
1292
+ :indi3,
1293
+ /^Mastercurriculum( |_|-)?Informatik( |_|-)?und( |_|-)?molekulare( |_|-)?Biologie$/i,
1294
+ /^Mastercurriculum( |_|-)?\(?Bio\)?Informatics( |_|-)?and( |_|-)?molecular( |_|-)?biotechnology( |_|-)?including( |_|-)?aspects( |_|-)?from( |_|-)?molecular( |_|-)?medicine$/i,
1295
+ /^Mastercurriculum( |_|-)?Bioinformatics( |_|-)?and( |_|-)?\(?nano\)?biotechnology( |_|-)?in( |_|-)?molecular( |_|-)?medicine$/i
1296
+ Studium.file_master_bioinformatics_and_nanobiotechnology_in_molecular_medicine
1297
+ # ======================================================================= #
1298
+ # === :bachelor_agrarwissenschaften_curriculum
1299
+ # ======================================================================= #
1300
+ when :bachelor_agrarwissenschaften_curriculum,
1301
+ :bachelor_agrarwissenschaften,
1302
+ :agrar,
1303
+ :Agrarwissenschaften,
1304
+ :aw,
1305
+ :bachelor_AW
1306
+ FILE_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM
1307
+ # ======================================================================= #
1308
+ # === :bachelor_dummy_curriculum
1309
+ # ======================================================================= #
1310
+ when :bachelor_dummy_curriculum,
1311
+ :bachelor_dummy,
1312
+ :bachelorcurriculum_dummy,
1313
+ :dummy
1314
+ FILE_BACHELOR_DUMMY_CURRICULUM
1315
+ # ======================================================================= #
1316
+ # === :master_dummy_curriculum
1317
+ # ======================================================================= #
1318
+ when :master_dummy_curriculum,
1319
+ :master_dummy,
1320
+ :mdummy
1321
+ FILE_MASTER_DUMMY_CURRICULUM
1322
+ # ======================================================================= #
1323
+ # === :bachelor_informatik_und_molekulare_biologie
1324
+ #
1325
+ # This is the individual bachelor curriculum at the TU Vienna.
1326
+ # ======================================================================= #
1327
+ when :bachelor_informatik_und_molekulare_biologie,
1328
+ :bachelor_biologische_informatik,
1329
+ :indi1,
1330
+ :top,
1331
+ /^Bachelorcurriculum( |_|-)?Informatik( |_|-)?und( |_|-)?molekulare( |_|-)?Biologie$/i,
1332
+ /^Bachelor( |_|-)?Informatik( |_|-)?und( |_|-)?molekulare( |_|-)?Biologie$/i,
1333
+ /^Informatik( |_|-)?und( |_|-)?molekulare( |_|-)?Biologie$/i,
1334
+ :bachelor_individual_bachelor_informatik_und_molekulare_biologie
1335
+ FILE_BACHELOR_INFORMATIK_UND_MOLEKULARE_BIOLOGIE
1336
+ # ======================================================================= #
1337
+ # === :bachelor_medizinische_informatik
1338
+ #
1339
+ # This entry is for the curriculum "Bachelor Medizinische Informatik"
1340
+ # at the TU Vienna.
1341
+ # ======================================================================= #
1342
+ when :bachelor_medizinische_informatik,
1343
+ :bachelor_medizinische_informatik_curriculum,
1344
+ :medizinische_informatik,
1345
+ /^bachelor( |_|-)?medizinische( |_|-)?informatik$/i
1346
+ FILE_BACHELOR_MEDIZINISCHE_INFORMATIK_CURRICULUM
1347
+ # ======================================================================= #
1348
+ # === :bachelor_vektor_curriculum
1349
+ #
1350
+ # This is the entry that has the :default symbol assigned.
1351
+ # ======================================================================= #
1352
+ when :bachelor_vektor_curriculum,
1353
+ :bachelor_vektorx_curriculum,
1354
+ :bachelor_vektoren,
1355
+ :bachelor_vector,
1356
+ :bachelor_vektorx,
1357
+ :bachelor_vektor,
1358
+ :bachelorvektorx,
1359
+ :bachelorvektor,
1360
+ :bachelorvektoren,
1361
+ :bachelor_vector_curriculum,
1362
+ :bvektorx,
1363
+ :bvektor,
1364
+ :bvector,
1365
+ :bachelor,
1366
+ :bvek,
1367
+ :bvec,
1368
+ :vektor,
1369
+ :default,
1370
+ :indi4,
1371
+ :indi, # ← The main indi entry point.
1372
+ :"Bachelorcurriculum Vector-based strategies in Life Sciences, Molecular Medicine and Biotechnology",
1373
+ /^Bachelorcurriculum( |_|-)?Vector( |_|-)?based( |_|-)?strategies( |_|-)?in( |_|-)?Life( |_|-)?Sciences\,?( |_|-)?\(?Bio\)?Informatics\,?( |_|-)?Molecular( |_|-)?Medicine( |_|-)?and( |_|-)?Biotechnology$/i,
1374
+ /^Bachelorcurriculum( |_|-)?Vector( |_|-)?based( |_|-)?strategies( |_|-)?in( |_|-)?Life( |_|-)?Sciences\,?( |_|-)?Molecular( |_|-)?Medicine( |_|-)?and( |_|-)?Biotechnology$/i,
1375
+ /^-?-?bvec$/i
1376
+ FILE_BACHELOR_VEKTORX
1377
+ # ======================================================================= #
1378
+ # === :master_vektoren_curriculum
1379
+ # ======================================================================= #
1380
+ when :master_vektoren_curriculum,
1381
+ :master_vektoren,
1382
+ :master_vektorx,
1383
+ :master_vector,
1384
+ :master_vektor,
1385
+ :master,
1386
+ :mvektorx,
1387
+ :mvektor,
1388
+ :mvector,
1389
+ :mastervektor,
1390
+ :master_vektor_curriculum,
1391
+ :mastermolekularsimulatorischtherapeutischevektoren,
1392
+ :mvek,
1393
+ :mvec,
1394
+ :default_input_file,
1395
+ :indi5,
1396
+ /^mvek$/i,
1397
+ /^Mastercurriculum( |_|-)?Vector( |_|-)?based( |_|-)?strategies( |_|-)?in( |_|-)?Life( |_|-)?Sciences\,?( |_|-)?\(?Bio\)?Informatics\,?( |_|-)?Molecular( |_|-)?Medicine( |_|-)?and( |_|-)?Biotechnology$/i
1398
+ FILE_MASTER_MOLEKULARSIMULATORISCHE_VEKTOREN
1399
+ # ======================================================================= #
1400
+ # === :bachelor_technical_chemistry_curriculum
1401
+ # ======================================================================= #
1402
+ when :bachelor_technical_chemistry_curriculum,
1403
+ :technical_chemistry_curriculum,
1404
+ :bachelor_technische_chemie_curriculum,
1405
+ :bachelor_technische_chemie,
1406
+ :tu_wien_chem
1407
+ FILE_BACHELOR_TECHNISCHE_CHEMIE_CURRICULUM
1408
+ # ======================================================================= #
1409
+ # === :bachelor_wirtschaftsinformatik_curriculum
1410
+ # ======================================================================= #
1411
+ when :bachelor_wirtschaftsinformatik_curriculum,
1412
+ :bachelor_wirtschaftsinformatik_033526
1413
+ FILE_BACHELOR_TUWIEN_WIRTSCHAFTSINFORMATIK_CURRICULUM
1414
+ # ======================================================================= #
1415
+ # === :bachelor_lmbt_curriculum
1416
+ # ======================================================================= #
1417
+ when :bachelor_lmbt_curriculum,
1418
+ :bachelor_lmbt,
1419
+ :bachelor_boku_lmbt_curriculum,
1420
+ :bachelor_lbt,
1421
+ :lbt
1422
+ FILE_BOKU_BACHELOR_LMBT_CURRICULUM
1423
+ # ======================================================================= #
1424
+ # === :master_lmbt_curriculum
1425
+ # ======================================================================= #
1426
+ when :master_lmbt_curriculum,
1427
+ :master_lmbt,
1428
+ :master_biotech,
1429
+ :master_lbt,
1430
+ :mlbt
1431
+ FILE_MASTER_LMBT_CURRICULUM
1432
+ # ======================================================================= #
1433
+ # === :bachelor_bioinformatik_und_molekulare_biotechnologie
1434
+ # ======================================================================= #
1435
+ when :bachelor_forstwirtschaft,
1436
+ :bachelor_forstwirtschaft_curriculum,
1437
+ :forstwirtschaft
1438
+ FILE_BACHELOR_FORSTWIRTSCHAFT_CURRICULUM
1439
+ # ======================================================================= #
1440
+ # === :bachelor_boku_ubrm_curriculum
1441
+ # ======================================================================= #
1442
+ when :bachelor_boku_ubrm_curriculum,
1443
+ :bachelor_ubrm
1444
+ FILE_BACHELOR_UBRM_CURRICULUM
1445
+ # ======================================================================= #
1446
+ # === :bachelor_master_vektoren
1447
+ #
1448
+ # This entry point is special, as it consists of two files, which
1449
+ # is why we will return an Array here.
1450
+ # ======================================================================= #
1451
+ when :bachelor_master_vektoren,
1452
+ :bachelor_master_vektorx,
1453
+ :bachelor_master_vektor_curriculum,
1454
+ :bachelor_master_x,
1455
+ :bachelormastervektor,
1456
+ :vectorx,
1457
+ :bmvektor,
1458
+ :combined
1459
+ [
1460
+ FILE_BACHELOR_VEKTORX,
1461
+ FILE_MASTER_MOLEKULARSIMULATORISCHE_VEKTOREN
1462
+ ]
1463
+ # ======================================================================= #
1464
+ # === :bachelor_molekularbiologie_graz
1465
+ # ======================================================================= #
1466
+ when :bachelor_molekularbiologie_graz,
1467
+ :bachelor_molekularbiologie_graz_curriculum,
1468
+ :bachelor_molekularbiologie_curriculum,
1469
+ :bachelor_molekularbiologie
1470
+ FILE_BACHELOR_MOLEKULARBIOLOGIE_GRAZ_CURRICULUM
1471
+ # ======================================================================= #
1472
+ # === :bachelor_ernährung_curriculum
1473
+ # ======================================================================= #
1474
+ when :bachelor_ernährung_curriculum,
1475
+ :bachelor_nutrition_science
1476
+ FILE_UNI_WIEN_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN_CURRICULUM
1477
+ # ======================================================================= #
1478
+ # === :bachelor_genetik_curriculum
1479
+ #
1480
+ # This one is also a conjugate curriculum, built upon the
1481
+ # "basisblock biologie".
1482
+ # ======================================================================= #
1483
+ when :bachelor_biologie_mikrobiologie_und_genetik,
1484
+ :bachelor_genetik_curriculum,
1485
+ :bachelor_genetics,
1486
+ :bachelor_genetik,
1487
+ :genetik_curriculum,
1488
+ :bgenetik
1489
+ [
1490
+ FILE_UNIWIEN_BACHELOR_BASISBLOCK_BIOLOGIE,
1491
+ FILE_BACHELOR_GENETIK
1492
+ ]
1493
+ # ======================================================================= #
1494
+ # === :bachelor_verfahrenstechnik_curriculum
1495
+ # ======================================================================= #
1496
+ when :bachelor_verfahrenstechnik_curriculum,
1497
+ :bachelor_verfahrenstechnik,
1498
+ :verfahrenstechnik_curriculum,
1499
+ :verfahrenstechnik
1500
+ FILE_BACHELOR_VERFAHRENSTECHNIK_CURRICULUM
1501
+ # ======================================================================= #
1502
+ # === :master_genetik_und_entwicklungsbiologie_curriculum
1503
+ # ======================================================================= #
1504
+ when :master_genetik_und_entwicklungsbiologie_curriculum,
1505
+ :master_genetik_und_entwicklungsbiologie,
1506
+ :genetik_und_entwicklungsbiologie
1507
+ FILE_MASTER_GENETIK_UND_ENTWICKLUNGSBIOLOGIE_CURRICULUM
1508
+ # ======================================================================= #
1509
+ # === :bachelor_pharmazie_curriculum
1510
+ # ======================================================================= #
1511
+ when :bachelor_pharmazie_curriculum,
1512
+ :bachelor_pharmazie,
1513
+ :pharmazie
1514
+ FILE_BACHELOR_PHARMAZIE_CURRICULUM
1515
+ # ======================================================================= #
1516
+ # === :master_pharmazie_curriculum
1517
+ # ======================================================================= #
1518
+ when :master_pharmazie_curriculum,
1519
+ :master_pharmazie,
1520
+ :mpharmazie
1521
+ FILE_MASTER_PHARMAZIE_CURRICULUM
1522
+ # ======================================================================= #
1523
+ # === :bachelor_chemie_curriculum
1524
+ # ======================================================================= #
1525
+ when :bachelor_chemie_curriculum,
1526
+ :bachelor_chemie,
1527
+ :bachelor_chemistry,
1528
+ :bachelor_chemie_uniwien
1529
+ FILE_BACHELOR_CHEMIE_CURRICULUM
1530
+ # ======================================================================= #
1531
+ # === :master_immuno
1532
+ # ======================================================================= #
1533
+ when :master_immuno,
1534
+ :master_immunobiology_curriculum,
1535
+ :Immuno
1536
+ FILE_MASTER_IMMUNOBIOLOGY_CURRICULUM
1537
+ # ======================================================================= #
1538
+ # === :master_biologische_chemie_curriculum
1539
+ # ======================================================================= #
1540
+ when :master_biologische_chemie_curriculum,
1541
+ :master_biologische_chemie,
1542
+ :Biologische_Chemie,
1543
+ :biologische_chemie
1544
+ FILE_MASTER_BIOLOGISCHE_CHEMIE_CURRICULUM
1545
+ # ======================================================================= #
1546
+ # === :bachelor_ktww_curriculum
1547
+ # ======================================================================= #
1548
+ when :bachelor_ktww_curriculum,
1549
+ :bachelor_boku_ktww_curriculum,
1550
+ :bachelor_ktww,
1551
+ :ktww
1552
+ FILE_BACHELOR_BOKU_KTWW_CURRICULUM
1553
+ # ======================================================================= #
1554
+ # === :bachelor_mikrobiologie
1555
+ #
1556
+ # The following entry-point was removed as of 29.02.2020.
1557
+ # ======================================================================= #
1558
+ # when :bachelor_mikrobiologie_individuelles_curriculum,
1559
+ # :bachelor_mikrobiologie,
1560
+ # :bachelor_mikrobiologie_curriculum,
1561
+ # :mikrobiologie,
1562
+ # :microbiology
1563
+ # FILE_BACHELOR_MIKROBIOLOGIE_INDIVIDUELLES_CURRICULUM
1564
+ # ======================================================================= #
1565
+ # === :master_tu_vienna_biotechnology_curriculum
1566
+ # ======================================================================= #
1567
+ when :master_tu_vienna_biotechnology_curriculum,
1568
+ :master_tu_vienna_biotechnology,
1569
+ :master_tuvienna_biotechnology,
1570
+ :master_tuwien_biotechnologie
1571
+ FILE_TUWIEN_MASTER_BIOTECHNOLOGY_CURRICULUM
1572
+ # ======================================================================= #
1573
+ # === :bachelor_ökologie_curriculum
1574
+ # ======================================================================= #
1575
+ when :bachelor_ökologie_curriculum,
1576
+ :bachelor_ökologie,
1577
+ :bachelor_ecology
1578
+ FILE_BACHELOR_ECOLOGY
1579
+ # ======================================================================= #
1580
+ # === :master_bioinformatik_curriculum
1581
+ # ======================================================================= #
1582
+ when :master_bioinformatik_curriculum,
1583
+ :master_bioinformatik,
1584
+ :master_bioinformatics
1585
+ FILE_UNIWIEN_MASTER_BIOINFORMATIK_CURRICULUM
1586
+ # ======================================================================= #
1587
+ # === :bachelor_botanik_curriculum
1588
+ # ======================================================================= #
1589
+ when :bachelor_botanik_curriculum,
1590
+ :bachelor_botanik
1591
+ [
1592
+ FILE_UNIWIEN_BACHELOR_BASISBLOCK_BIOLOGIE,
1593
+ FILE_BACHELOR_BOTANIK_CURRICULUM
1594
+ ]
1595
+ # ======================================================================= #
1596
+ # === :bachelor_molekulare_biologie_curriculum
1597
+ # ======================================================================= #
1598
+ when :bachelor_molekulare_biologie_curriculum,
1599
+ :bachelor_molekulare_biologie,
1600
+ :bachelor_molbio
1601
+ [
1602
+ FILE_UNIWIEN_BACHELOR_BASISBLOCK_BIOLOGIE,
1603
+ FILE_BACHELOR_MOLEKULARE_BIOLOGIE
1604
+ ]
1605
+ # ======================================================================= #
1606
+ # === :master_molbio_curriculum
1607
+ # ======================================================================= #
1608
+ when :master_molbio_curriculum,
1609
+ :master_molbio
1610
+ FILE_MASTER_MOLBIO
1611
+ # ======================================================================= #
1612
+ # === :bachelor_basisblock_biologie,
1613
+ # ======================================================================= #
1614
+ when :bachelor_basisblock_biologie,
1615
+ :bachelor_biologie_basisblock_curriculum
1616
+ FILE_UNIWIEN_BACHELOR_BASISBLOCK_BIOLOGIE
1617
+ # ======================================================================= #
1618
+ # === :master_boku_individuell
1619
+ # ======================================================================= #
1620
+ when :master_boku_individuell
1621
+ FILE_MASTER_BOKU_INDIVIDUELLES_CURRICULUM_BIOINFORMATIK_UND_BIOANALYTIK
1622
+ # ======================================================================= #
1623
+ # === :bachelor_boku_individuell
1624
+ # ======================================================================= #
1625
+ when :bachelor_boku_individuell
1626
+ FILE_BACHELOR_BOKU_INDIVIDUELLES_CURRICULUM_BIOINFORMATIK_UND_BIOANALYTIK
1627
+ # ======================================================================= #
1628
+ # === :bachelor_master_tu_wien
1629
+ # ======================================================================= #
1630
+ when :bachelor_master_tu_wien
1631
+ FILE_BACHELOR_MASTER_TU_WIEN_INDIVIDUELLES_STUDIUM
1632
+ end
1633
+ end; self.instance_eval { alias return_this_file return_file_for_this_curriculum } # === Studium.return_this_file
1634
+
1635
+ # ========================================================================= #
1636
+ # === GERMAN_WEEK_NAMES
1637
+ # ========================================================================= #
1638
+ GERMAN_WEEK_NAMES = {
1639
+ 'Mo' => 'Montag',
1640
+ 'Di' => 'Dienstag',
1641
+ 'Mi' => 'Mittwoch',
1642
+ 'Do' => 'Donnerstag',
1643
+ 'Fr' => 'Freitag',
1644
+ 'Sa' => 'Samstag',
1645
+ 'So' => 'Sonntag'
1646
+ }
1647
+
1648
+ # ========================================================================= #
1649
+ # === Studium::MONTH_NUMBER_TO_MONTH_NAME
1650
+ #
1651
+ # This constant maps from the month-number, such as 3, to the corresponding
1652
+ # name of that month, such as 'March'.
1653
+ # ========================================================================= #
1654
+ MONTH_NUMBER_TO_MONTH_NAME = {
1655
+ 1 => 'January',
1656
+ 2 => 'February',
1657
+ 3 => 'March',
1658
+ 4 => 'April',
1659
+ 5 => 'May',
1660
+ 6 => 'June',
1661
+ 7 => 'July',
1662
+ 8 => 'August',
1663
+ 9 => 'September',
1664
+ 10 => 'October',
1665
+ 11 => 'November',
1666
+ 12 => 'December'
1667
+ }
1668
+
1669
+ # ========================================================================= #
1670
+ # === MONTH_NAME_TO_MONTH_NUMBER
1671
+ #
1672
+ # And reverse the above Array as well.
1673
+ # ========================================================================= #
1674
+ MONTH_NAME_TO_MONTH_NUMBER = MONTH_NUMBER_TO_MONTH_NAME.invert
1675
+
1676
+ # ========================================================================= #
1677
+ # === FILE_GERMAN_TO_ENGLISH_MONTH_NAMES
1678
+ # ========================================================================= #
1679
+ FILE_GERMAN_TO_ENGLISH_MONTH_NAMES =
1680
+ "#{PROJECT_YAML_DIRECTORY}german/german_to_english_month_names.yml"
1681
+
1682
+ # ========================================================================= #
1683
+ # === MONTH_NAME_ALIASES_GERMAN_TO_ENGLISH
1684
+ # ========================================================================= #
1685
+ MONTH_NAME_ALIASES_GERMAN_TO_ENGLISH = YAML.load_file(
1686
+ FILE_GERMAN_TO_ENGLISH_MONTH_NAMES
1687
+ )
1688
+
1689
+ # ========================================================================= #
1690
+ # === ARRAY_AVAILABLE_WEEKDAYS
1691
+ #
1692
+ # This will be an Array that has ['montag', 'dienstag' etc..]
1693
+ # ========================================================================= #
1694
+ ARRAY_AVAILABLE_WEEKDAYS = GERMAN_WEEK_NAMES.values.map(&:downcase)
1695
+
1696
+ # ========================================================================= #
1697
+ # === REVERSE_GERMAN_WEEK_NAMES
1698
+ # ========================================================================= #
1699
+ REVERSE_GERMAN_WEEK_NAMES = GERMAN_WEEK_NAMES.invert
1700
+
1701
+ # ========================================================================= #
1702
+ # === ARRAY_ALL_KNOWN_DAYS_OF_THE_WEEK
1703
+ # ========================================================================= #
1704
+ ARRAY_ALL_KNOWN_DAYS_OF_THE_WEEK = [
1705
+ :mo, :di, :mi, :do, :fr, :sa, :so
1706
+ ]
1707
+
1708
+ # ========================================================================= #
1709
+ # === Studium.file_curricula
1710
+ #
1711
+ # This would expand to the location:
1712
+ #
1713
+ # /Programs/Ruby/2.5.0/lib/ruby/site_ruby/2.5.0/studium/yaml/curricula.yml
1714
+ #
1715
+ # on my system.
1716
+ # ========================================================================= #
1717
+ def self.file_curricula
1718
+ "#{Studium.yaml_directory?}curricula.yml"
1719
+ end
1720
+
1721
+ # ========================================================================= #
1722
+ # === Studium.file_mitteilungsblätter
1723
+ # ========================================================================= #
1724
+ def self.file_mitteilungsblätter
1725
+ "#{Studium.yaml_directory?}mitteilungsblätter/mitteilungsblätter.yml"
1726
+ end
1727
+
1728
+ # ========================================================================= #
1729
+ # === Studium.file_directory_to_the_exam_topics
1730
+ #
1731
+ # Keep track of the directory to the exam topics.
1732
+ #
1733
+ # This will be hardcoded to return e. g.:
1734
+ #
1735
+ # /Programs/Ruby/2.4.1/lib/ruby/site_ruby/2.4.0/studium/yaml/directory_to_the_exam_topics.yml
1736
+ #
1737
+ # ========================================================================= #
1738
+ def self.file_directory_to_the_exam_topics
1739
+ "#{PROJECT_YAML_DIRECTORY}directory_to_the_exam_topics.yml"
1740
+ end
1741
+
1742
+ # ========================================================================= #
1743
+ # === FILE_FOR_EXAM_QUESTIONS
1744
+ #
1745
+ # This constant may be found at e. g.:
1746
+ #
1747
+ # /Programs/Ruby/2.6.0/lib/ruby/site_ruby/2.6.0/studium/yaml/file_for_last_exam_question.yml
1748
+ #
1749
+ # ========================================================================= #
1750
+ FILE_FOR_EXAM_QUESTIONS =
1751
+ "#{yaml_directory?}file_for_last_exam_question.yml"
1752
+
1753
+ # ========================================================================= #
1754
+ # === Studium.file_for_exam_questions
1755
+ #
1756
+ # Easier module-method to query where the exam questions are stored.
1757
+ #
1758
+ # This may give a result such as:
1759
+ # /Programs/Ruby/2.4.1/lib/ruby/site_ruby/2.4.0/studium/yaml/file_for_exam_questions.yml
1760
+ # ========================================================================= #
1761
+ def self.file_for_exam_questions
1762
+ FILE_FOR_EXAM_QUESTIONS
1763
+ end
1764
+
1765
+ # ========================================================================= #
1766
+ # === ExamsPerMonth::FILE_PASSED_EXAMS_PER_MONTH
1767
+ #
1768
+ # This constant will hold the .csv dataset for my exams.
1769
+ #
1770
+ # bl $STUDIUM/YAML/passed_exams_per_month.csv
1771
+ # ========================================================================= #
1772
+ FILE_PASSED_EXAMS_PER_MONTH = "#{STUDIUM_YAML_DIRECTORY}passed_exams_per_month.csv"
1773
+
1774
+ # ========================================================================= #
1775
+ # === FILE_MASTER_VEKTORX
1776
+ #
1777
+ # This is for the individual master-curriculum, vektorx, at the
1778
+ # University of Vienna.
1779
+ # ========================================================================= #
1780
+ FILE_MASTER_VEKTORX =
1781
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}individual/"\
1782
+ "master_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology"\
1783
+ ".yml"
1784
+ FILE_MASTER_MOLEKULARSIMULATORISCHE_VEKTOREN = FILE_MASTER_VEKTORX # === FILE_MASTER_MOLEKULARSIMULATORISCHE_VEKTOREN
1785
+ MASTER_MOLEKULARSIMULATORISCHE_VEKTOREN = FILE_MASTER_VEKTORX # === MASTER_MOLEKULARSIMULATORISCHE_VEKTOREN
1786
+ FILE_MASTER_VECTOR = FILE_MASTER_VEKTORX # === FILE_MASTER_VECTOR
1787
+ FILE_MASTER_VEKTORSYSTEME = FILE_MASTER_VEKTORX # === FILE_MASTER_VEKTORSYSTEME
1788
+
1789
+ # ========================================================================= #
1790
+ # === FILE_BACHELOR_BOKU_KTWW_CURRICULUM
1791
+ # ========================================================================= #
1792
+ FILE_BACHELOR_BOKU_KTWW_CURRICULUM =
1793
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
1794
+ "bachelor/bachelor_ktww_033231.yml"
1795
+
1796
+ # ========================================================================= #
1797
+ # === FILE_BACHELOR_DUMMY_CURRICULUM
1798
+ # ========================================================================= #
1799
+ FILE_BACHELOR_DUMMY_CURRICULUM =
1800
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
1801
+ "bachelor/bachelor_dummy_curriculum.yml"
1802
+
1803
+ # ========================================================================= #
1804
+ # === FILE_MASTER_DUMMY_CURRICULUM
1805
+ # ========================================================================= #
1806
+ FILE_MASTER_DUMMY_CURRICULUM =
1807
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
1808
+ "master_dummy_curriculum.yml"
1809
+
1810
+ # ========================================================================= #
1811
+ # === FILE_MASTER_BIOINFORMATICS_AND_MOLECULAR_BIOTECHNOLOGY
1812
+ # ========================================================================= #
1813
+ FILE_MASTER_BIOINFORMATICS_AND_MOLECULAR_BIOTECHNOLOGY =
1814
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}individual/"\
1815
+ "master_bioinformatics_and_molecular_biotechnology_including_aspects_from_molecular_medicine.yml"
1816
+
1817
+ # ========================================================================= #
1818
+ # === FILE_BACHELOR_TUWIEN_WIRTSCHAFTSINFORMATIK_CURRICULUM
1819
+ # ========================================================================= #
1820
+ FILE_BACHELOR_TUWIEN_WIRTSCHAFTSINFORMATIK_CURRICULUM =
1821
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
1822
+ "bachelor/bachelor_wirtschaftsinformatik_033526.yml"
1823
+
1824
+ # ========================================================================= #
1825
+ # === FILE_BACHELOR_BIOINFORMATIK_UND_MOLEKULARE_BIOTECHNOLOGIE_UNTER_BERÜCKSICHTIGUNG_MEDIZINISCH_IMMUNOLOGISCHER_ASPEKTE_CURRICULUM
1826
+ #
1827
+ # This is for the individual curriculum at the BOKU, at the bachelor level.
1828
+ #
1829
+ # This was deprecated as of June 2022.
1830
+ # ========================================================================= #
1831
+ # FILE_BACHELOR_BIOINFORMATIK_UND_MOLEKULARE_BIOTECHNOLOGIE_UNTER_BERÜCKSICHTIGUNG_MEDIZINISCH_IMMUNOLOGISCHER_ASPEKTE_CURRICULUM =
1832
+
1833
+ # ========================================================================= #
1834
+ # === FILE_BACHELOR_INFORMATIK_UND_BIOTECHNOLOGIE_UNTER_BERÜCKSICHTIGUNG_IMMUNANALYTISCH_MOLEKULARMEDIZINISCHER_ASPEKTE
1835
+ # ========================================================================= #
1836
+ FILE_BACHELOR_INFORMATIK_UND_BIOTECHNOLOGIE_UNTER_BERÜCKSICHTIGUNG_IMMUNANALYTISCH_MOLEKULARMEDIZINISCHER_ASPEKTE =
1837
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}individual/"\
1838
+ "bachelor_informatik_und_biotechnologie_unter_berücksichtigung_immunanalytisch_molekularmedizinischer_aspekte.yml"
1839
+
1840
+ # ========================================================================= #
1841
+ # === Studium.file_indi2
1842
+ # ========================================================================= #
1843
+ def self.file_indi2
1844
+ FILE_BACHELOR_INFORMATIK_UND_BIOTECHNOLOGIE_UNTER_BERÜCKSICHTIGUNG_IMMUNANALYTISCH_MOLEKULARMEDIZINISCHER_ASPEKTE
1845
+ end
1846
+
1847
+ # ========================================================================= #
1848
+ # === FILE_BACHELOR_INFORMATIK_UND_MOLEKULARE_BIOLOGIE
1849
+ #
1850
+ # This is for the (individual) curriculum at the TU Vienna.
1851
+ # ========================================================================= #
1852
+ FILE_BACHELOR_INFORMATIK_UND_MOLEKULARE_BIOLOGIE =
1853
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}individual/"\
1854
+ "bachelor_informatik_und_molekulare_biologie.yml"
1855
+
1856
+ # ========================================================================= #
1857
+ # === FILE_BACHELOR_TUWIEN_ELEKTROTECHNIK_UND_INFORMATIONSTECHNIK_CURRICULUM
1858
+ # ========================================================================= #
1859
+ FILE_BACHELOR_TUWIEN_ELEKTROTECHNIK_UND_INFORMATIONSTECHNIK_CURRICULUM =
1860
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
1861
+ "bachelor/bachelor_elektrotechnik_und_informationstechnik_033235.yml"
1862
+
1863
+ # ========================================================================= #
1864
+ # === FILE_BACHELOR_FORSTWIRTSCHAFT_CURRICULUM
1865
+ # ========================================================================= #
1866
+ FILE_BACHELOR_FORSTWIRTSCHAFT_CURRICULUM =
1867
+ "#{PROJECT_CURRICULA_YAML_DIRECTORY}"\
1868
+ "bachelor/bachelor_forstwirtschaft_033225.yml"
1869
+
1870
+ # ========================================================================= #
1871
+ # === ARRAY_REGISTERED_CURRICULA_FILES
1872
+ # ========================================================================= #
1873
+ ARRAY_REGISTERED_CURRICULA_FILES = [
1874
+ FILE_BACHELOR_MASTER_BOKU_MOLEKULARE_BIOTECHNOLOGIE_UND_BIOINFORMATIK,
1875
+ FILE_BACHELOR_BOKU_INDIVIDUELLES_CURRICULUM_BIOINFORMATIK_UND_BIOANALYTIK,
1876
+ FILE_MASTER_BOKU_INDIVIDUELLES_CURRICULUM_BIOINFORMATIK_UND_BIOANALYTIK,
1877
+ FILE_BACHELOR_MASTER_TU_WIEN_INDIVIDUELLES_STUDIUM,
1878
+ FILE_BACHELOR_MOLEKULARE_BIOLOGIE,
1879
+ FILE_MASTER_MOLEKULARE_BIOLOGIE,
1880
+ FILE_MASTER_IMMUNBIOLOGIE,
1881
+ FILE_BACHELOR_LMBT,
1882
+ FILE_BACHELOR_BOTANIK,
1883
+ FILE_UNIWIEN_MASTER_BIOINFORMATIK_CURRICULUM,
1884
+ FILE_BACHELOR_MEDIZINISCHE_INFORMATIK_CURRICULUM,
1885
+ FILE_BACHELOR_ERNÄHRUNGSWISSENSCHAFTEN,
1886
+ FILE_BACHELOR_ECOLOGY,
1887
+ FILE_MASTER_GENETIK_UND_ENTWICKLUNGSBIOLOGIE,
1888
+ FILE_MASTER_LMBT,
1889
+ FILE_BACHELOR_BOKU_UBRM,
1890
+ FILE_BOKU_BACHELOR_AGRARWISSENSCHAFTEN_CURRICULUM,
1891
+ FILE_BACHELOR_INFORMATIK_CURRICULUM,
1892
+ FILE_MASTER_BIOLOGISCHE_CHEMIE_CURRICULUM,
1893
+ FILE_MASTER_PHARMAZIE,
1894
+ FILE_BACHELOR_CHEMIE_CURRICULUM,
1895
+ FILE_BACHELOR_PHARMAZIE,
1896
+ FILE_BACHELOR_GENETIK,
1897
+ FILE_TUWIEN_MASTER_BIOTECHNOLOGY_CURRICULUM,
1898
+ FILE_BACHELOR_TECHNISCHE_CHEMIE_CURRICULUM,
1899
+ FILE_BACHELOR_VERFAHRENSTECHNIK_CURRICULUM,
1900
+ FILE_BACHELOR_MOLEKULARBIOLOGIE_GRAZ_CURRICULUM,
1901
+ FILE_BACHELOR_VEKTORX,
1902
+ FILE_MASTER_VEKTORX,
1903
+ FILE_BACHELOR_BOKU_KTWW_CURRICULUM,
1904
+ FILE_MASTER_BIOINFORMATICS_AND_MOLECULAR_BIOTECHNOLOGY,
1905
+ FILE_BACHELOR_TUWIEN_WIRTSCHAFTSINFORMATIK_CURRICULUM,
1906
+ FILE_BACHELOR_INFORMATIK_UND_BIOTECHNOLOGIE_UNTER_BERÜCKSICHTIGUNG_IMMUNANALYTISCH_MOLEKULARMEDIZINISCHER_ASPEKTE,
1907
+ FILE_BACHELOR_INFORMATIK_UND_MOLEKULARE_BIOLOGIE,
1908
+ FILE_BACHELOR_TUWIEN_ELEKTROTECHNIK_UND_INFORMATIONSTECHNIK_CURRICULUM,
1909
+ FILE_BACHELOR_FORSTWIRTSCHAFT_CURRICULUM
1910
+ ]
1911
+
1912
+ # ========================================================================= #
1913
+ # === Studium.file_current_exams
1914
+ #
1915
+ # Feedback for the current-exams file, via this method.
1916
+ #
1917
+ # Where all current exams are kept.
1918
+ #
1919
+ # If the environment has a value defined for STUDIUM_YAML then we will
1920
+ # use that. Otherwise, we will simply hardcode to the absolute path.
1921
+ # ========================================================================= #
1922
+ def self.file_current_exams
1923
+ "#{Studium::PROJECT_YAML_DIRECTORY}current_exams.yml"
1924
+ end; self.instance_eval { alias current_exams file_current_exams } # === Studium.current_exams
1925
+
1926
+ # ========================================================================= #
1927
+ # === FILE_LAST_TOPIC
1928
+ #
1929
+ # This file keeps track of the last topic used.
1930
+ # ========================================================================= #
1931
+ FILE_LAST_TOPIC = "#{log_dir}last_topic.md"
1932
+
1933
+ # ========================================================================= #
1934
+ # === Studium.last_topic?
1935
+ #
1936
+ # Reader-method over the FILE_LAST_TOPIC constant. This one will determine
1937
+ # the path dynamically, whereas the constant above will be always static.
1938
+ # ========================================================================= #
1939
+ def self.last_topic?
1940
+ target_file = "#{Studium.log_dir?}last_topic.md"
1941
+ if File.exist? target_file
1942
+ File.read(target_file).chomp
1943
+ else
1944
+ e "No file exists at #{sfile(target_file)}."
1945
+ end
1946
+ end
1947
+
1948
+ # ========================================================================= #
1949
+ # === MY_EXAM_TOPICS
1950
+ #
1951
+ # Just for my exam topics - a hardcoded constant to the directory there.
1952
+ # ========================================================================= #
1953
+ MY_EXAM_TOPICS = "#{RUBY_SRC_STUDIUM_LIB}studium/exam_topics/"
1954
+
1955
+ # ========================================================================= #
1956
+ # === Studium.exam_topics_directory?
1957
+ # ========================================================================= #
1958
+ def self.exam_topics_directory?
1959
+ "#{Studium.project_base_directory?}exam_topics/"
1960
+ end
1961
+
1962
+ # ========================================================================= #
1963
+ # === Studium.file_statistics?
1964
+ # ========================================================================= #
1965
+ def self.file_statistics?
1966
+ "#{Studium.yaml_directory?}statistics.yml"
1967
+ end; self.instance_eval { alias file_statistics file_statistics? } # === Studium.file_statistics
1968
+
1969
+ # ========================================================================= #
1970
+ # === Studium.main_topic?
1971
+ #
1972
+ # This method will return the main topics (themes) that were assigned
1973
+ # manually - in other words, exam topics that were used.
1974
+ # ========================================================================= #
1975
+ def self.main_topic?(
1976
+ return_all_entries = false
1977
+ )
1978
+ require 'studium/requires/require_yaml.rb'
1979
+ case return_all_entries
1980
+ when :return_the_full_dataset
1981
+ return_all_entries = true
1982
+ end
1983
+ result = YAML.load_file(FILE_MAIN_TOPIC)
1984
+ unless return_all_entries
1985
+ if result.is_a? Array
1986
+ result = result.first
1987
+ end
1988
+ end
1989
+ result
1990
+ end
1991
+
1992
+ # ========================================================================= #
1993
+ # === Studium.set_exam_topics
1994
+ #
1995
+ # Note that this will point to a directory.
1996
+ # ========================================================================= #
1997
+ def self.set_exam_topics(
1998
+ i = EXAM_TOPICS
1999
+ )
2000
+ if i
2001
+ i << '/' unless i.end_with? '/' # Ensure trailing '/' here.
2002
+ end
2003
+ @exam_topics = i
2004
+ end
2005
+
2006
+ # ========================================================================= #
2007
+ # === @exam_topics
2008
+ #
2009
+ # We need this instance variable on the toplevel because we may have
2010
+ # to change this via the commandline sometimes.
2011
+ #
2012
+ # The input to Studium.set_exam_topics() should be a directory where
2013
+ # the individual question-answer files can be found.
2014
+ # ========================================================================= #
2015
+ if ::Studium.is_on_roebe?
2016
+ ::Studium.set_exam_topics(MY_EXAM_TOPICS)
2017
+ else # This here is the default, for non-roebe systems.
2018
+ ::Studium.set_exam_topics(@exam_topics)
2019
+ end
2020
+
2021
+ # ========================================================================= #
2022
+ # === directory_to_the_exam_topics.yml
2023
+ #
2024
+ # However had, the above can be overruled if the user has a non-empty
2025
+ # yaml file called "directory_to_the_exam_topics.yml". If this file
2026
+ # exists, and if it is non-empty, then we will instead use that as the
2027
+ # directory. It will also overrule my personal setting in this case.
2028
+ # ========================================================================= #
2029
+ if File.exist?(Studium.file_directory_to_the_exam_topics) and
2030
+ !File.empty?(Studium.file_directory_to_the_exam_topics)
2031
+ _ = YAML.load_file(Studium.file_directory_to_the_exam_topics)
2032
+ ::Studium.set_exam_topics(_)
2033
+ end
2034
+
2035
+ # ========================================================================= #
2036
+ # === Studium.permanenty_set_directory_to_the_exam_topics
2037
+ #
2038
+ # Use this method to permanently set another directory to
2039
+ # the exam topics.
2040
+ #
2041
+ # Usage example:
2042
+ #
2043
+ # studium --set-directory-to-the-exam-topics=/Depot/j/EXAM_TOPICS/
2044
+ #
2045
+ # ========================================================================= #
2046
+ def self.permanenty_set_directory_to_the_exam_topics(i)
2047
+ i << '/' unless i.end_with? '/'
2048
+ what = i
2049
+ into = Studium.file_directory_to_the_exam_topics
2050
+ Studium.write_what_into(what, into)
2051
+ # ======================================================================= #
2052
+ # On my home system, we will also update the file.
2053
+ # ======================================================================= #
2054
+ if ::Studium.is_on_roebe?
2055
+ into = RUBY_STUDIUM_HOME_DIR+'yaml/directory_to_the_exam_topics.yml'
2056
+ if File.exist? into
2057
+ Studium.write_what_into(what, into)
2058
+ else
2059
+ e "File at `#{sfile(into)}` does not exist."
2060
+ end
2061
+ end
2062
+ end
2063
+
2064
+ # ========================================================================= #
2065
+ # === Studium.directory_to_my_exam_topics
2066
+ # ========================================================================= #
2067
+ def self.directory_to_my_exam_topics
2068
+ @exam_topics
2069
+ end
2070
+
2071
+ # ========================================================================= #
2072
+ # === Studium.directory_to_the_exam_topics?
2073
+ #
2074
+ # This may return a directory, such as e. g.:
2075
+ #
2076
+ # /home/x/programming/ruby/src/studium/lib/studium/exam_topics/
2077
+ #
2078
+ # ========================================================================= #
2079
+ def self.directory_to_the_exam_topics?
2080
+ @exam_topics
2081
+ end; self.instance_eval { alias path_to_exam_topic? directory_to_the_exam_topics? } # === Studium.path_to_exam_topic?
2082
+ self.instance_eval { alias path_to_the_exam_directory? directory_to_the_exam_topics? } # === Studium.path_to_the_exam_directory?
2083
+ self.instance_eval { alias directory_to_the_exam_topics directory_to_the_exam_topics? } # === Studium.directory_to_the_exam_topics
2084
+ self.instance_eval { alias directory_containing_the_exam_topics? directory_to_the_exam_topics? } # === Studium.directory_containing_the_exam_topics?
2085
+ self.instance_eval { alias path_to_the_exam_topics? directory_to_the_exam_topics? } # === Studium.path_to_the_exam_topics?
2086
+ self.instance_eval { alias exam_topics? directory_to_the_exam_topics? } # === Studium.exam_topics?
2087
+
2088
+ # ========================================================================= #
2089
+ # === Studium.my_exam_topics_directory?
2090
+ #
2091
+ # This method will always return a hardcoded Path.
2092
+ # ========================================================================= #
2093
+ def self.my_exam_topics_directory?
2094
+ '/home/x/programming/ruby/src/studium/lib/studium/exam_topics/'
2095
+ end
2096
+
2097
+ end
2098
+
2099
+ if __FILE__ == $PROGRAM_NAME
2100
+ alias e puts
2101
+ include Studium
2102
+ require 'colours/autoinclude'
2103
+ e Studium::ROEBE_BOKU_WIEN_YAML
2104
+ e rev+'The main topic is: '+sfancy(Studium.main_topic?)
2105
+ e rev+'The list of past exams on my home system are kept here: '+
2106
+ sfile(Studium.file_exams?)
2107
+ e Studium::ONE_MINUTE
2108
+ e SIX_DAYS
2109
+ e Studium::MAKE_USE_OF_UNICODE_SYMBOLS_WHENEVER_POSSIBLE
2110
+ e Studium::USE_THIS_EDITOR
2111
+ e Studium.file_last_question_asked?
2112
+ e RUBY_SRC_DIR
2113
+ e Studium.ruby_src_dir_at_home?
2114
+ e Studium.studium_at_home_dir?
2115
+ e Studium::ROEBE_BOKU_WIEN_YAML
2116
+ e Studium::ROEBE_UNI_WIEN
2117
+ e Studium::ROEBE_UNI_WIEN_YAML
2118
+ e Studium::ROEBE_TU_WIEN_YAML
2119
+ e 'The file important_exams.yml can be found at '+
2120
+ sfancy(Studium.file_important_exams?)
2121
+ e Studium.return_file_for_this_curriculum(:default)
2122
+ e Studium.return_file_for_this_curriculum(:bachelor_vektor_curriculum)
2123
+ e
2124
+ e 'All german weekdays are as follows:'
2125
+ e
2126
+ pp Studium::ARRAY_GERMAN_WEEKDAYS
2127
+ e
2128
+ e 'Studium.file_curricula '+steelblue(Studium.file_curricula)
2129
+ e
2130
+ e steelblue(Studium.file_mitteilungsblätter)
2131
+ e
2132
+ e 'Studium.file_directory_to_the_exam_topics: '+
2133
+ steelblue(Studium.file_directory_to_the_exam_topics)
2134
+ e
2135
+ e 'The exam topics directory is kept at: '+
2136
+ sfancy(Studium.exam_topics_directory?)
2137
+ e
2138
+ e Studium.directory_to_the_exam_topics?
2139
+ e Studium.return_location_to_this_exam_topic(ARGV)
2140
+ end # returnlocationtothisexamtopic
2141
+ # returnlocationtothisexamtopic yeast
2142
+ # constants.rb