studium 0.14.16

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