studium 0.10.1

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

Potentially problematic release.


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

Files changed (882) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +1982 -0
  3. data/bin/ask_exam_question +7 -0
  4. data/bin/check_description_of_these_lectures +7 -0
  5. data/bin/curriculum_module_displayer +7 -0
  6. data/bin/d10 +7 -0
  7. data/bin/d100 +7 -0
  8. data/bin/d15 +7 -0
  9. data/bin/d20 +7 -0
  10. data/bin/d25 +7 -0
  11. data/bin/d3 +7 -0
  12. data/bin/d30 +7 -0
  13. data/bin/d5 +7 -0
  14. data/bin/determine_curricula +7 -0
  15. data/bin/exam_registration_at +7 -0
  16. data/bin/exam_statistics +7 -0
  17. data/bin/exams_per_month +9 -0
  18. data/bin/finished_exams_at_this_university +7 -0
  19. data/bin/flashcards +7 -0
  20. data/bin/mandatory_continuous_assessment +7 -0
  21. data/bin/mandatory_upcoming_courses +7 -0
  22. data/bin/n_exam_questions_already_answered +16 -0
  23. data/bin/nquestions +7 -0
  24. data/bin/nsolved +7 -0
  25. data/bin/open_last_exam_question_asked_file +7 -0
  26. data/bin/passed_pr/303/274fungsimmanente_courses +7 -0
  27. data/bin/return_n_ects_from_this_file +7 -0
  28. data/bin/show_lectures_on_the_commandline +7 -0
  29. data/bin/show_themes +7 -0
  30. data/bin/solved +9 -0
  31. data/bin/solved_ects +7 -0
  32. data/bin/studienkennzahl +7 -0
  33. data/bin/studium +7 -0
  34. data/bin/studium_skeleton +7 -0
  35. data/bin/ufind +7 -0
  36. data/bin/upcoming_exams +7 -0
  37. data/bin/week_parser +7 -0
  38. data/doc/ECTS_CONSIDERATIONS.md +81 -0
  39. data/doc/HOW_TO_ADAPT_THIS_PROJECT.md +43 -0
  40. data/doc/HOW_TO_DETERMINE_WHICH_PART_IS_THE_QUESTION_AND_WHICH_PART_IS_THE_ANSWER.md +47 -0
  41. data/doc/README.gen +1965 -0
  42. data/doc/TODO_FOR_STUDIUM_GEM.md +113 -0
  43. data/doc/deprecated_components.md +24 -0
  44. data/doc/documentation_for_the_file_lecture_information.md +294 -0
  45. data/doc/elegant_colours.md +20 -0
  46. data/img/STUDIES.png +0 -0
  47. data/lib/studium.rb +5 -0
  48. data/lib/studium/autoinclude.rb +7 -0
  49. data/lib/studium/base/base.rb +84 -0
  50. data/lib/studium/base/cliner.rb +58 -0
  51. data/lib/studium/base/colours.rb +307 -0
  52. data/lib/studium/base/commandline_arguments.rb +64 -0
  53. data/lib/studium/base/constants.rb +34 -0
  54. data/lib/studium/base/curriculum.rb +329 -0
  55. data/lib/studium/base/directory_to_the_exam_topics.rb +23 -0
  56. data/lib/studium/base/editor.rb +28 -0
  57. data/lib/studium/base/encoding.rb +36 -0
  58. data/lib/studium/base/esystem.rb +23 -0
  59. data/lib/studium/base/minimal_prototype.rb +66 -0
  60. data/lib/studium/base/misc.rb +854 -0
  61. data/lib/studium/base/mode.rb +92 -0
  62. data/lib/studium/base/obtain.rb +145 -0
  63. data/lib/studium/base/opnn.rb +46 -0
  64. data/lib/studium/base/prototype.rb +92 -0
  65. data/lib/studium/base/readlines.rb +55 -0
  66. data/lib/studium/base/replace.rb +110 -0
  67. data/lib/studium/base/reset.rb +77 -0
  68. data/lib/studium/base/run.rb +17 -0
  69. data/lib/studium/base/src_dir_at_home.rb +20 -0
  70. data/lib/studium/base/time.rb +634 -0
  71. data/lib/studium/base/unicode.rb +95 -0
  72. data/lib/studium/base/word_wrap.rb +58 -0
  73. data/lib/studium/boku/README.md +4 -0
  74. data/lib/studium/boku/boku_biotechnology_all_master_lectures.rb +142 -0
  75. data/lib/studium/boku/boku_/303/266ffnungszeiten.rb +29 -0
  76. data/lib/studium/boku/show_three_pillars_of_these_lectures.rb +96 -0
  77. data/lib/studium/boku/three_pillars.rb +232 -0
  78. data/lib/studium/check_and_sanitize/README.md +11 -0
  79. data/lib/studium/check_and_sanitize/check_curriculum_for_correct_separation_of_bachelor_and_master.rb +149 -0
  80. data/lib/studium/check_and_sanitize/check_for_all_exam_topics_being_registered.rb +107 -0
  81. data/lib/studium/check_and_sanitize/check_for_existing_description_of_this_lecture.rb +197 -0
  82. data/lib/studium/check_and_sanitize/check_the_lecture_information_file.rb +171 -0
  83. data/lib/studium/check_and_sanitize/missing_priority_entry.rb +44 -0
  84. data/lib/studium/check_and_sanitize/sanitize_this_string_containing_the_lva_dates.rb +79 -0
  85. data/lib/studium/colours/colours.rb +570 -0
  86. data/lib/studium/colours/sfancy.rb +40 -0
  87. data/lib/studium/colours/sfile.rb +35 -0
  88. data/lib/studium/colours/simp.rb +38 -0
  89. data/lib/studium/colours/use_this_colour_for_exam_questions_and_exam_answers.rb +76 -0
  90. data/lib/studium/commandline/commandline.rb +25 -0
  91. data/lib/studium/commandline/constants.rb +16 -0
  92. data/lib/studium/commandline/help.rb +152 -0
  93. data/lib/studium/commandline/initialize.rb +27 -0
  94. data/lib/studium/commandline/menu.rb +760 -0
  95. data/lib/studium/commandline/misc.rb +707 -0
  96. data/lib/studium/commandline/reset.rb +24 -0
  97. data/lib/studium/commandline/run.rb +20 -0
  98. data/lib/studium/constants/boku_wien.rb +52 -0
  99. data/lib/studium/constants/constants.rb +25 -0
  100. data/lib/studium/constants/delay.rb +28 -0
  101. data/lib/studium/constants/editor.rb +28 -0
  102. data/lib/studium/constants/exam_topics.rb +183 -0
  103. data/lib/studium/constants/file_constants.rb +875 -0
  104. data/lib/studium/constants/image_constants.rb +216 -0
  105. data/lib/studium/constants/last_question_asked.rb +38 -0
  106. data/lib/studium/constants/lecture_types_that_are_mandatory_continuous_assessment.rb +47 -0
  107. data/lib/studium/constants/misc.rb +163 -0
  108. data/lib/studium/constants/namespace.rb +14 -0
  109. data/lib/studium/constants/newline.rb +14 -0
  110. data/lib/studium/constants/regexes.rb +35 -0
  111. data/lib/studium/constants/return_file_for_this_curriculum.rb +411 -0
  112. data/lib/studium/constants/roebe.rb +173 -0
  113. data/lib/studium/constants/time.rb +52 -0
  114. data/lib/studium/constants/tu_wien.rb +39 -0
  115. data/lib/studium/constants/uni_wien.rb +24 -0
  116. data/lib/studium/constants/unicode.rb +27 -0
  117. data/lib/studium/constants/week.rb +138 -0
  118. data/lib/studium/constants/www_constants.rb +23 -0
  119. data/lib/studium/curricula/curriculum.rb +199 -0
  120. data/lib/studium/curricula/curriculum_as_string.rb +279 -0
  121. data/lib/studium/curricula/curriculum_module_displayer/constants.rb +38 -0
  122. data/lib/studium/curricula/curriculum_module_displayer/curriculum_module_displayer.rb +417 -0
  123. data/lib/studium/curricula/curriculum_module_displayer/initialize.rb +25 -0
  124. data/lib/studium/curricula/curriculum_module_displayer/menu.rb +45 -0
  125. data/lib/studium/curricula/curriculum_module_displayer/reset.rb +77 -0
  126. data/lib/studium/curricula/curriculum_module_displayer/run.rb +20 -0
  127. data/lib/studium/curricula/curriculum_module_displayer/set_use_this_curriculum.rb +93 -0
  128. data/lib/studium/curricula/curriculum_module_displayer/show_and_report.rb +190 -0
  129. data/lib/studium/curricula/determine_curricula/constants.rb +16 -0
  130. data/lib/studium/curricula/determine_curricula/determine_curricula.rb +36 -0
  131. data/lib/studium/curricula/determine_curricula/help.rb +39 -0
  132. data/lib/studium/curricula/determine_curricula/initialize.rb +48 -0
  133. data/lib/studium/curricula/determine_curricula/menu.rb +138 -0
  134. data/lib/studium/curricula/determine_curricula/misc.rb +402 -0
  135. data/lib/studium/curricula/determine_curricula/report.rb +131 -0
  136. data/lib/studium/curricula/determine_curricula/reset.rb +62 -0
  137. data/lib/studium/curricula/determine_curricula/run.rb +19 -0
  138. data/lib/studium/curricula/determine_elective_courses_in_this_curriculum.rb +112 -0
  139. data/lib/studium/curricula/display_bachelor_curricula.rb +89 -0
  140. data/lib/studium/curricula/mitteilungsbl/303/244tter.rb +336 -0
  141. data/lib/studium/curricula/modules/display_on_the_commandline.rb +316 -0
  142. data/lib/studium/curricula/modules/return_n_ects_in_this_module.rb +74 -0
  143. data/lib/studium/curricula/n_percent_solved_in_this_curriculum.rb +75 -0
  144. data/lib/studium/curricula/random_curriculum_creator.rb +171 -0
  145. data/lib/studium/curricula/show_lectures_of_this_curriculum.rb +114 -0
  146. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/constants.rb +16 -0
  147. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/initialize.rb +27 -0
  148. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/menu.rb +35 -0
  149. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/misc.rb +242 -0
  150. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/report.rb +140 -0
  151. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/reset.rb +67 -0
  152. data/lib/studium/curricula/show_lectures_of_this_curriculum_id/show_lectures_of_this_curriculum_id.rb +37 -0
  153. data/lib/studium/curricula/show_solved_percentage_among_the_registered_curricula.rb +87 -0
  154. data/lib/studium/ects/boku_ects_splitter.rb +127 -0
  155. data/lib/studium/ects/ects_parser.rb +179 -0
  156. data/lib/studium/ects/ects_per_university.rb +140 -0
  157. data/lib/studium/ects/ects_scanner.rb +141 -0
  158. data/lib/studium/ects/ects_to_university_parser.rb +148 -0
  159. data/lib/studium/ects/erledigt.rb +131 -0
  160. data/lib/studium/ects/last_entry_is_curriculum.rb +147 -0
  161. data/lib/studium/ects/n_ects_in_these_lectures.rb +185 -0
  162. data/lib/studium/ects/n_ects_points_in_mandatory_presence_courses.rb +50 -0
  163. data/lib/studium/ects/noch_zu_absolvieren.rb +172 -0
  164. data/lib/studium/ects/return_n_ects_from_this_file.rb +58 -0
  165. data/lib/studium/ects/return_n_ects_from_this_url.rb +202 -0
  166. data/lib/studium/ects/search_for_n_ects.rb +540 -0
  167. data/lib/studium/ects/show_completed_ects_in_all_curricula.rb +210 -0
  168. data/lib/studium/ects/show_passed_credits_per_curriculum.rb +254 -0
  169. data/lib/studium/ects/simple_total_ects_points.rb +143 -0
  170. data/lib/studium/ects/solved_ects/constants.rb +24 -0
  171. data/lib/studium/ects/solved_ects/reset.rb +54 -0
  172. data/lib/studium/ects/solved_ects/solved_ects.rb +325 -0
  173. data/lib/studium/ects/solved_ects_per_university/reset.rb +25 -0
  174. data/lib/studium/ects/solved_ects_per_university/solved_ects_per_university.rb +106 -0
  175. data/lib/studium/ects/still_missing.rb +133 -0
  176. data/lib/studium/ects/sum_of_ects.rb +150 -0
  177. data/lib/studium/encoding/encoding.rb +150 -0
  178. data/lib/studium/exam_topics/RNAi_siRNA_and_miRNA +79 -0
  179. data/lib/studium/exam_topics/abfall_als_ressource +86 -0
  180. data/lib/studium/exam_topics/advanced_biochemistry +762 -0
  181. data/lib/studium/exam_topics/advanced_biotechnology +192 -0
  182. data/lib/studium/exam_topics/advanced_cellbiology +25 -0
  183. data/lib/studium/exam_topics/advanced_chemistry +453 -0
  184. data/lib/studium/exam_topics/advanced_microbiology +44 -0
  185. data/lib/studium/exam_topics/advanced_topics_in_plant_sciences +51 -0
  186. data/lib/studium/exam_topics/advanced_virology +52 -0
  187. data/lib/studium/exam_topics/ageing +101 -0
  188. data/lib/studium/exam_topics/agrar_ecology +61 -0
  189. data/lib/studium/exam_topics/agrarmarkt +70 -0
  190. data/lib/studium/exam_topics/agrarphysik +35 -0
  191. data/lib/studium/exam_topics/alcohols +29 -0
  192. data/lib/studium/exam_topics/algorithms +49 -0
  193. data/lib/studium/exam_topics/allergie +73 -0
  194. data/lib/studium/exam_topics/allgemeine_genetik +1006 -0
  195. data/lib/studium/exam_topics/allgemeine_mikrobiologie +855 -0
  196. data/lib/studium/exam_topics/aminoacids +417 -0
  197. data/lib/studium/exam_topics/analytische_chemie_1 +131 -0
  198. data/lib/studium/exam_topics/analytische_chemie_2 +31 -0
  199. data/lib/studium/exam_topics/anatomie +248 -0
  200. data/lib/studium/exam_topics/anorganische_chemie +289 -0
  201. data/lib/studium/exam_topics/anthropologie +115 -0
  202. data/lib/studium/exam_topics/antibodies_and_antigens +747 -0
  203. data/lib/studium/exam_topics/apoptosis +35 -0
  204. data/lib/studium/exam_topics/archaea +41 -0
  205. data/lib/studium/exam_topics/architecture +8 -0
  206. data/lib/studium/exam_topics/artificial_intelligence +81 -0
  207. data/lib/studium/exam_topics/audio +10 -0
  208. data/lib/studium/exam_topics/bacteriophages +224 -0
  209. data/lib/studium/exam_topics/basic_biochemistry +1008 -0
  210. data/lib/studium/exam_topics/basic_biotechnology +1011 -0
  211. data/lib/studium/exam_topics/basic_chemistry +1007 -0
  212. data/lib/studium/exam_topics/basic_virology +955 -0
  213. data/lib/studium/exam_topics/bauwesen +6 -0
  214. data/lib/studium/exam_topics/betriebssysteme +125 -0
  215. data/lib/studium/exam_topics/betriebswirtschaftslehre +29 -0
  216. data/lib/studium/exam_topics/bioanalytik_und_biosensoren +381 -0
  217. data/lib/studium/exam_topics/biochips +78 -0
  218. data/lib/studium/exam_topics/bioelektrochemie +56 -0
  219. data/lib/studium/exam_topics/biofilms +22 -0
  220. data/lib/studium/exam_topics/bioinformatics +475 -0
  221. data/lib/studium/exam_topics/biological_therapeutics +152 -0
  222. data/lib/studium/exam_topics/biologie +134 -0
  223. data/lib/studium/exam_topics/biomarkers +106 -0
  224. data/lib/studium/exam_topics/biomaterials +46 -0
  225. data/lib/studium/exam_topics/biomembranes +6 -0
  226. data/lib/studium/exam_topics/bionik +65 -0
  227. data/lib/studium/exam_topics/biophysik +34 -0
  228. data/lib/studium/exam_topics/biopolymers +10 -0
  229. data/lib/studium/exam_topics/bioprozesstechnik +139 -0
  230. data/lib/studium/exam_topics/bioressourcenmanagement +78 -0
  231. data/lib/studium/exam_topics/bodenkunde +345 -0
  232. data/lib/studium/exam_topics/bodenmikrobiologie +40 -0
  233. data/lib/studium/exam_topics/cancerbiology +441 -0
  234. data/lib/studium/exam_topics/cell_cultures +154 -0
  235. data/lib/studium/exam_topics/cellbiology +962 -0
  236. data/lib/studium/exam_topics/cellular_transport_and_protein_secretion +27 -0
  237. data/lib/studium/exam_topics/chemische_technologie_anorganischer_stoffe +208 -0
  238. data/lib/studium/exam_topics/chemisches_labor +59 -0
  239. data/lib/studium/exam_topics/chemotaxis_and_motility_in_prokaryotes +74 -0
  240. data/lib/studium/exam_topics/citric_acid_cycle +70 -0
  241. data/lib/studium/exam_topics/clinical_microbiology +486 -0
  242. data/lib/studium/exam_topics/computer_graphics +5 -0
  243. data/lib/studium/exam_topics/computer_science +269 -0
  244. data/lib/studium/exam_topics/crispr +25 -0
  245. data/lib/studium/exam_topics/cyanobacteria +37 -0
  246. data/lib/studium/exam_topics/cytogenetics_and_chromosome_biology +506 -0
  247. data/lib/studium/exam_topics/databases_and_sql +105 -0
  248. data/lib/studium/exam_topics/dna_mutation_and_dna_repair +33 -0
  249. data/lib/studium/exam_topics/dna_replication +53 -0
  250. data/lib/studium/exam_topics/ecogenetics +27 -0
  251. data/lib/studium/exam_topics/ecological_agriculture +12 -0
  252. data/lib/studium/exam_topics/ecology +313 -0
  253. data/lib/studium/exam_topics/economy +210 -0
  254. data/lib/studium/exam_topics/elektronenmikroskopie +353 -0
  255. data/lib/studium/exam_topics/elektrophorese +88 -0
  256. data/lib/studium/exam_topics/elektrotechnik +8 -0
  257. data/lib/studium/exam_topics/elisa +54 -0
  258. data/lib/studium/exam_topics/embryologie_und_entwicklung +541 -0
  259. data/lib/studium/exam_topics/endospores_and_spores +92 -0
  260. data/lib/studium/exam_topics/enzymes_and_cofactors +327 -0
  261. data/lib/studium/exam_topics/epigenetik +177 -0
  262. data/lib/studium/exam_topics/ethik +125 -0
  263. data/lib/studium/exam_topics/evolution_and_evolutionary_genetics +323 -0
  264. data/lib/studium/exam_topics/excel +7 -0
  265. data/lib/studium/exam_topics/fish +19 -0
  266. data/lib/studium/exam_topics/fluorescence_microscopy +7 -0
  267. data/lib/studium/exam_topics/food_microbiology_and_food_biotechnology +17 -0
  268. data/lib/studium/exam_topics/forensik +11 -0
  269. data/lib/studium/exam_topics/forstwirtschaft +52 -0
  270. data/lib/studium/exam_topics/fortgeschrittene_genetik +429 -0
  271. data/lib/studium/exam_topics/fortgeschrittene_gentechnik +189 -0
  272. data/lib/studium/exam_topics/fortgeschrittene_physik +6 -0
  273. data/lib/studium/exam_topics/fungi +78 -0
  274. data/lib/studium/exam_topics/genetische_krankheiten +150 -0
  275. data/lib/studium/exam_topics/genexpression +1008 -0
  276. data/lib/studium/exam_topics/genomics_and_metagenomics +205 -0
  277. data/lib/studium/exam_topics/gentechnik_und_praktische_biochemie +863 -0
  278. data/lib/studium/exam_topics/geochemistry +66 -0
  279. data/lib/studium/exam_topics/geography +5 -0
  280. data/lib/studium/exam_topics/geologie_und_mineralogie +610 -0
  281. data/lib/studium/exam_topics/geschichte +94 -0
  282. data/lib/studium/exam_topics/gluconeogenesis +34 -0
  283. data/lib/studium/exam_topics/glycolysis +95 -0
  284. data/lib/studium/exam_topics/glykomik +42 -0
  285. data/lib/studium/exam_topics/glyoxylatzyklus +23 -0
  286. data/lib/studium/exam_topics/grassland_cultivation +32 -0
  287. data/lib/studium/exam_topics/hormone +122 -0
  288. data/lib/studium/exam_topics/html +7 -0
  289. data/lib/studium/exam_topics/human_ecology +8 -0
  290. data/lib/studium/exam_topics/hygiene +191 -0
  291. data/lib/studium/exam_topics/imaging_and_microscopy +224 -0
  292. data/lib/studium/exam_topics/immunanalytik +88 -0
  293. data/lib/studium/exam_topics/immunologie +888 -0
  294. data/lib/studium/exam_topics/informatik +95 -0
  295. data/lib/studium/exam_topics/innate_immunity +20 -0
  296. data/lib/studium/exam_topics/insekten +30 -0
  297. data/lib/studium/exam_topics/insulin_and_diabetes +55 -0
  298. data/lib/studium/exam_topics/java +440 -0
  299. data/lib/studium/exam_topics/javascript +10 -0
  300. data/lib/studium/exam_topics/klima +6 -0
  301. data/lib/studium/exam_topics/landtechnik +27 -0
  302. data/lib/studium/exam_topics/lebensmittel +206 -0
  303. data/lib/studium/exam_topics/lebensmitteltechnologie +16 -0
  304. data/lib/studium/exam_topics/linux +5 -0
  305. data/lib/studium/exam_topics/lipids +95 -0
  306. data/lib/studium/exam_topics/macroeconomics +39 -0
  307. data/lib/studium/exam_topics/mathematics +175 -0
  308. data/lib/studium/exam_topics/medizin_und_biomedizinische_technik +250 -0
  309. data/lib/studium/exam_topics/medizinische_chemie_und_pharmazie +397 -0
  310. data/lib/studium/exam_topics/messtechnik_und_regeltechnik +104 -0
  311. data/lib/studium/exam_topics/metabolismus +433 -0
  312. data/lib/studium/exam_topics/microbial_ecology +35 -0
  313. data/lib/studium/exam_topics/mikrobielle_lebensgemeinschaften +34 -0
  314. data/lib/studium/exam_topics/mikrobielle_physiologie +153 -0
  315. data/lib/studium/exam_topics/mixed +289 -0
  316. data/lib/studium/exam_topics/molecular_biology_of_plants +235 -0
  317. data/lib/studium/exam_topics/molekulare_medizin +129 -0
  318. data/lib/studium/exam_topics/nanotechnologie +303 -0
  319. data/lib/studium/exam_topics/nature_conservation_and_biodiversity +165 -0
  320. data/lib/studium/exam_topics/naturstoffe +9 -0
  321. data/lib/studium/exam_topics/netzwerke +32 -0
  322. data/lib/studium/exam_topics/neurobiology +266 -0
  323. data/lib/studium/exam_topics/nucleotide_sequencing +30 -0
  324. data/lib/studium/exam_topics/object_oriented_modeling +14 -0
  325. data/lib/studium/exam_topics/obstbau +234 -0
  326. data/lib/studium/exam_topics/organische_chemie +1007 -0
  327. data/lib/studium/exam_topics/organische_chemie_2 +72 -0
  328. data/lib/studium/exam_topics/paleobiology +33 -0
  329. data/lib/studium/exam_topics/parasitic_diseases_and_molecular_infection_biology +335 -0
  330. data/lib/studium/exam_topics/patent_law +55 -0
  331. data/lib/studium/exam_topics/pathologie +713 -0
  332. data/lib/studium/exam_topics/pcr +133 -0
  333. data/lib/studium/exam_topics/peroxisomes_glycosomes_and_lysosomes +54 -0
  334. data/lib/studium/exam_topics/pflanzenanatomie +240 -0
  335. data/lib/studium/exam_topics/pflanzenbau +24 -0
  336. data/lib/studium/exam_topics/pflanzenschutz +35 -0
  337. data/lib/studium/exam_topics/pflanzenwissenschaften +1009 -0
  338. data/lib/studium/exam_topics/pharmaceutical_biotechnology +250 -0
  339. data/lib/studium/exam_topics/physik +338 -0
  340. data/lib/studium/exam_topics/physikalische_chemie +85 -0
  341. data/lib/studium/exam_topics/physiology_and_histology +485 -0
  342. data/lib/studium/exam_topics/phytochemie +33 -0
  343. data/lib/studium/exam_topics/plant_biotechnology +127 -0
  344. data/lib/studium/exam_topics/plant_breeding +64 -0
  345. data/lib/studium/exam_topics/plant_development +50 -0
  346. data/lib/studium/exam_topics/populationsgenetik +136 -0
  347. data/lib/studium/exam_topics/posttranslationale_modifikation_von_proteinen +186 -0
  348. data/lib/studium/exam_topics/projektmanagement +218 -0
  349. data/lib/studium/exam_topics/prokaryote_genetics +470 -0
  350. data/lib/studium/exam_topics/proteomik +38 -0
  351. data/lib/studium/exam_topics/prozesstechnik +95 -0
  352. data/lib/studium/exam_topics/psychologie +9 -0
  353. data/lib/studium/exam_topics/python +350 -0
  354. data/lib/studium/exam_topics/quality_management +241 -0
  355. data/lib/studium/exam_topics/rechtsgrundlagen +115 -0
  356. data/lib/studium/exam_topics/research_topics_in_immunobiology +42 -0
  357. data/lib/studium/exam_topics/rna_and_dna +362 -0
  358. data/lib/studium/exam_topics/rna_seq +11 -0
  359. data/lib/studium/exam_topics/ruby +131 -0
  360. data/lib/studium/exam_topics/ruby_on_rails +62 -0
  361. data/lib/studium/exam_topics/scientific_writing_and_publishing +38 -0
  362. data/lib/studium/exam_topics/semisynthese_von_proteinen_und_nukleotiden +120 -0
  363. data/lib/studium/exam_topics/sexualbiologie +59 -0
  364. data/lib/studium/exam_topics/signal_transduction_and_laser_systems +136 -0
  365. data/lib/studium/exam_topics/splicing_exons_and_introns +57 -0
  366. data/lib/studium/exam_topics/statistik +202 -0
  367. data/lib/studium/exam_topics/stemcells +87 -0
  368. data/lib/studium/exam_topics/structural_bioinformatics +54 -0
  369. data/lib/studium/exam_topics/strukturbiologie +319 -0
  370. data/lib/studium/exam_topics/system_biology_and_synthetic_biology +87 -0
  371. data/lib/studium/exam_topics/systematische_zoologie +430 -0
  372. data/lib/studium/exam_topics/technical_ecology +144 -0
  373. data/lib/studium/exam_topics/technische_chemie +194 -0
  374. data/lib/studium/exam_topics/technische_grundlagen_der_informatik +22 -0
  375. data/lib/studium/exam_topics/technische_mikrobiologie +403 -0
  376. data/lib/studium/exam_topics/technisches_zeichnen +5 -0
  377. data/lib/studium/exam_topics/the_bacterial_cell_wall +86 -0
  378. data/lib/studium/exam_topics/the_c_plus_plus_programming_language +488 -0
  379. data/lib/studium/exam_topics/the_c_programming_language +128 -0
  380. data/lib/studium/exam_topics/the_cellcycle +65 -0
  381. data/lib/studium/exam_topics/the_european_union +119 -0
  382. data/lib/studium/exam_topics/the_interferon_system +32 -0
  383. data/lib/studium/exam_topics/the_microbiome +163 -0
  384. data/lib/studium/exam_topics/the_universe +6 -0
  385. data/lib/studium/exam_topics/theoretische_chemie +5 -0
  386. data/lib/studium/exam_topics/theoretische_informatik +157 -0
  387. data/lib/studium/exam_topics/tierzucht +94 -0
  388. data/lib/studium/exam_topics/toxikologie +403 -0
  389. data/lib/studium/exam_topics/transcription +26 -0
  390. data/lib/studium/exam_topics/translation_ribosomes_and_translational_control +138 -0
  391. data/lib/studium/exam_topics/umweltbiotechnologie +58 -0
  392. data/lib/studium/exam_topics/umweltchemie +233 -0
  393. data/lib/studium/exam_topics/urbanism_and_traffic +19 -0
  394. data/lib/studium/exam_topics/vaccines_and_vaccination +234 -0
  395. data/lib/studium/exam_topics/vectors_and_gene_therapy +237 -0
  396. data/lib/studium/exam_topics/verfahrenstechnik +32 -0
  397. data/lib/studium/exam_topics/veterinary_medicine +10 -0
  398. data/lib/studium/exam_topics/vitamine +19 -0
  399. data/lib/studium/exam_topics/wasserkunde +141 -0
  400. data/lib/studium/exam_topics/weinbau +59 -0
  401. data/lib/studium/exam_topics/wissenschaft +17 -0
  402. data/lib/studium/exam_topics/yeast +97 -0
  403. data/lib/studium/exam_topics/zoologie +329 -0
  404. data/lib/studium/exams/afterburn.rb +264 -0
  405. data/lib/studium/exams/ask_exam_from_the_upcoming_exams_pool.rb +158 -0
  406. data/lib/studium/exams/ask_exam_question/answer.rb +106 -0
  407. data/lib/studium/exams/ask_exam_question/ask_exam_question.rb +135 -0
  408. data/lib/studium/exams/ask_exam_question/constants.rb +74 -0
  409. data/lib/studium/exams/ask_exam_question/delay.rb +101 -0
  410. data/lib/studium/exams/ask_exam_question/help.rb +72 -0
  411. data/lib/studium/exams/ask_exam_question/initialize.rb +70 -0
  412. data/lib/studium/exams/ask_exam_question/menu.rb +382 -0
  413. data/lib/studium/exams/ask_exam_question/misc.rb +938 -0
  414. data/lib/studium/exams/ask_exam_question/question.rb +77 -0
  415. data/lib/studium/exams/ask_exam_question/reset.rb +103 -0
  416. data/lib/studium/exams/ask_exam_question/run.rb +49 -0
  417. data/lib/studium/exams/ask_exam_topic_question.rb +120 -0
  418. data/lib/studium/exams/ask_question_from_alias.rb +151 -0
  419. data/lib/studium/exams/ask_question_from_any_of_the_still_missing_lectures.rb +133 -0
  420. data/lib/studium/exams/ask_question_from_grouped_themes.rb +141 -0
  421. data/lib/studium/exams/ask_question_from_last_topic.rb +93 -0
  422. data/lib/studium/exams/ask_random_question.rb +190 -0
  423. data/lib/studium/exams/autoinclude.rb +7 -0
  424. data/lib/studium/exams/class.rb +127 -0
  425. data/lib/studium/exams/csv/create_csv_passed_exams_file.rb +225 -0
  426. data/lib/studium/exams/cycle.rb +283 -0
  427. data/lib/studium/exams/dataset.rb +90 -0
  428. data/lib/studium/exams/exam_registration_at/constants.rb +49 -0
  429. data/lib/studium/exams/exam_registration_at/exam_registration_at.rb +254 -0
  430. data/lib/studium/exams/exam_registration_at/help.rb +46 -0
  431. data/lib/studium/exams/exam_registration_at/menu.rb +81 -0
  432. data/lib/studium/exams/exam_registration_at/report.rb +108 -0
  433. data/lib/studium/exams/exam_registration_at/reset.rb +49 -0
  434. data/lib/studium/exams/exam_statistics_from_this_file/exam_statistics_from_this_file.rb +127 -0
  435. data/lib/studium/exams/exam_topics.rb +202 -0
  436. data/lib/studium/exams/exams.rb +18 -0
  437. data/lib/studium/exams/exams_per_month/colours.rb +81 -0
  438. data/lib/studium/exams/exams_per_month/constants.rb +69 -0
  439. data/lib/studium/exams/exams_per_month/dataset.rb +64 -0
  440. data/lib/studium/exams/exams_per_month/exams_per_month.rb +291 -0
  441. data/lib/studium/exams/exams_per_month/help.rb +72 -0
  442. data/lib/studium/exams/exams_per_month/initialize.rb +39 -0
  443. data/lib/studium/exams/exams_per_month/menu.rb +258 -0
  444. data/lib/studium/exams/exams_per_month/open.rb +139 -0
  445. data/lib/studium/exams/exams_per_month/requires.rb +8 -0
  446. data/lib/studium/exams/exams_per_month/reset.rb +115 -0
  447. data/lib/studium/exams/exams_per_month/run.rb +18 -0
  448. data/lib/studium/exams/exams_per_month/sanitize.rb +129 -0
  449. data/lib/studium/exams/exams_per_month/show_and_report.rb +1281 -0
  450. data/lib/studium/exams/exams_this_week.rb +179 -0
  451. data/lib/studium/exams/fix_exam_dates.rb +129 -0
  452. data/lib/studium/exams/last_exams/last_exams.rb +381 -0
  453. data/lib/studium/exams/lectures_without_exam_entry.rb +145 -0
  454. data/lib/studium/exams/mandatory_continuous_assessment/compare.rb +144 -0
  455. data/lib/studium/exams/mandatory_continuous_assessment/constants.rb +18 -0
  456. data/lib/studium/exams/mandatory_continuous_assessment/help.rb +92 -0
  457. data/lib/studium/exams/mandatory_continuous_assessment/initialize.rb +46 -0
  458. data/lib/studium/exams/mandatory_continuous_assessment/mandatory_continuous_assessment.rb +1115 -0
  459. data/lib/studium/exams/mandatory_continuous_assessment/menu.rb +114 -0
  460. data/lib/studium/exams/mandatory_continuous_assessment/misc.rb +61 -0
  461. data/lib/studium/exams/mandatory_continuous_assessment/reset.rb +85 -0
  462. data/lib/studium/exams/mandatory_continuous_assessment/run.rb +33 -0
  463. data/lib/studium/exams/mandatory_continuous_assessment/set_title_of_the_curriculum.rb +181 -0
  464. data/lib/studium/exams/mandatory_continuous_assessment/show_and_report.rb +147 -0
  465. data/lib/studium/exams/move_the_last_exam_question_to_the_top_of_the_file/move_the_last_exam_question_to_the_top_of_the_file.rb +119 -0
  466. data/lib/studium/exams/n_exams_in_these_topics.rb +408 -0
  467. data/lib/studium/exams/new_questions_per_year.rb +153 -0
  468. data/lib/studium/exams/next_exam.rb +111 -0
  469. data/lib/studium/exams/next_exams.rb +385 -0
  470. data/lib/studium/exams/open_exam_associated_url.rb +158 -0
  471. data/lib/studium/exams/open_last_exam_question_asked_file/constants.rb +20 -0
  472. data/lib/studium/exams/open_last_exam_question_asked_file/initialize.rb +29 -0
  473. data/lib/studium/exams/open_last_exam_question_asked_file/open_last_exam_question_asked_file.rb +112 -0
  474. data/lib/studium/exams/passed_exams/passed_exams.rb +46 -0
  475. data/lib/studium/exams/pruefung.rb +288 -0
  476. data/lib/studium/exams/push_solved_questions_on_top.rb +188 -0
  477. data/lib/studium/exams/question_answer/question_answer.rb +842 -0
  478. data/lib/studium/exams/questions_solved_from_day_to_day.rb +353 -0
  479. data/lib/studium/exams/repeat_last_question.rb +78 -0
  480. data/lib/studium/exams/show_all_passed_exams_of_this_university.rb +260 -0
  481. data/lib/studium/exams/show_backlog_of_exams.rb +125 -0
  482. data/lib/studium/exams/show_next_exams_for.rb +141 -0
  483. data/lib/studium/exams/show_themes/constants.rb +33 -0
  484. data/lib/studium/exams/show_themes/menu.rb +61 -0
  485. data/lib/studium/exams/show_themes/misc.rb +536 -0
  486. data/lib/studium/exams/show_themes/reset.rb +64 -0
  487. data/lib/studium/exams/show_themes/show_themes.rb +27 -0
  488. data/lib/studium/exams/show_upcoming_exams/consider_autogenerating_exam_aliases.rb +170 -0
  489. data/lib/studium/exams/show_upcoming_exams/constants.rb +82 -0
  490. data/lib/studium/exams/show_upcoming_exams/help.rb +33 -0
  491. data/lib/studium/exams/show_upcoming_exams/initialize.rb +71 -0
  492. data/lib/studium/exams/show_upcoming_exams/menu.rb +53 -0
  493. data/lib/studium/exams/show_upcoming_exams/report.rb +195 -0
  494. data/lib/studium/exams/show_upcoming_exams/reset.rb +38 -0
  495. data/lib/studium/exams/show_upcoming_exams/run.rb +20 -0
  496. data/lib/studium/exams/show_upcoming_exams/show_upcoming_exams.rb +494 -0
  497. data/lib/studium/exams/solve_all_questions_from_this_topic.rb +122 -0
  498. data/lib/studium/exams/solved/constants.rb +37 -0
  499. data/lib/studium/exams/solved/help.rb +23 -0
  500. data/lib/studium/exams/solved/menu.rb +35 -0
  501. data/lib/studium/exams/solved/reset.rb +30 -0
  502. data/lib/studium/exams/solved/solved.rb +306 -0
  503. data/lib/studium/exams/steop.rb +99 -0
  504. data/lib/studium/exams/unsolve_all_questions_from_this_topic.rb +170 -0
  505. data/lib/studium/exams/upcoming_exams/constants.rb +20 -0
  506. data/lib/studium/exams/upcoming_exams/help.rb +38 -0
  507. data/lib/studium/exams/upcoming_exams/initialize.rb +27 -0
  508. data/lib/studium/exams/upcoming_exams/menu.rb +79 -0
  509. data/lib/studium/exams/upcoming_exams/misc.rb +360 -0
  510. data/lib/studium/exams/upcoming_exams/reset.rb +37 -0
  511. data/lib/studium/exams/upcoming_exams/run.rb +25 -0
  512. data/lib/studium/exams/upcoming_exams/upcoming_exams.rb +32 -0
  513. data/lib/studium/exams/upcoming_exams_at_the_boku/constants.rb +23 -0
  514. data/lib/studium/exams/upcoming_exams_at_the_boku/html.rb +64 -0
  515. data/lib/studium/exams/upcoming_exams_at_the_boku/upcoming_exams_at_the_boku.rb +194 -0
  516. data/lib/studium/exams/upcoming_exams_dataset.rb +251 -0
  517. data/lib/studium/exams/upload_exam_topics.rb +357 -0
  518. data/lib/studium/flashcards/flashcards.rb +95 -0
  519. data/lib/studium/graphviz/README.md +4 -0
  520. data/lib/studium/graphviz/bachelor_vector_based_strategies.dot +160 -0
  521. data/lib/studium/graphviz/master_vector_based_strategies.dot +46 -0
  522. data/lib/studium/gui/gtk2/constants.rb +52 -0
  523. data/lib/studium/gui/gtk2/exam_card.rb +199 -0
  524. data/lib/studium/gui/gtk2/flip_card.rb +8 -0
  525. data/lib/studium/gui/gtk2/frame.rb +319 -0
  526. data/lib/studium/gui/gtk2/main_box.rb +188 -0
  527. data/lib/studium/gui/gtk2/misc.rb +99 -0
  528. data/lib/studium/gui/gtk2/module_methods.rb +58 -0
  529. data/lib/studium/gui/gtk2/require_gtk_files.rb +25 -0
  530. data/lib/studium/gui/gtk2/run.rb +47 -0
  531. data/lib/studium/gui/gtk2/show_curriculum_entries.rb +186 -0
  532. data/lib/studium/gui/gtk2/simple_widget_question_answer.rb +185 -0
  533. data/lib/studium/gui/gtk2/vbox.rb +748 -0
  534. data/lib/studium/gui/gtk3/README.md +1 -0
  535. data/lib/studium/gui/gtk3/studium_panel.rb +54 -0
  536. data/lib/studium/lectures/show_lectures_on_the_commandline/constants.rb +22 -0
  537. data/lib/studium/lectures/show_lectures_on_the_commandline/determine.rb +630 -0
  538. data/lib/studium/lectures/show_lectures_on_the_commandline/help.rb +44 -0
  539. data/lib/studium/lectures/show_lectures_on_the_commandline/html.rb +599 -0
  540. data/lib/studium/lectures/show_lectures_on_the_commandline/initialize.rb +53 -0
  541. data/lib/studium/lectures/show_lectures_on_the_commandline/konsole.rb +32 -0
  542. data/lib/studium/lectures/show_lectures_on_the_commandline/menu.rb +466 -0
  543. data/lib/studium/lectures/show_lectures_on_the_commandline/misc.rb +598 -0
  544. data/lib/studium/lectures/show_lectures_on_the_commandline/reset.rb +120 -0
  545. data/lib/studium/lectures/show_lectures_on_the_commandline/run.rb +44 -0
  546. data/lib/studium/lectures/show_lectures_on_the_commandline/show.rb +106 -0
  547. data/lib/studium/lectures/show_lectures_on_the_commandline/show_lectures_on_the_commandline.rb +491 -0
  548. data/lib/studium/lectures/show_lectures_on_the_commandline/sorted_individual_curricula.rb +117 -0
  549. data/lib/studium/logging/README.md +2 -0
  550. data/lib/studium/logging/ensure_that_the_log_directory_exists.rb +47 -0
  551. data/lib/studium/logging/html_log_directory.rb +35 -0
  552. data/lib/studium/logging/log_directory.rb +100 -0
  553. data/lib/studium/logging/store_last_question_asked_into_file.rb +138 -0
  554. data/lib/studium/misc/return_remote_homepage_of_this_lecture.rb +8661 -0
  555. data/lib/studium/misc/return_remote_moodle_link_of_this_lecture.rb +1343 -0
  556. data/lib/studium/parsers/README.md +2 -0
  557. data/lib/studium/parsers/custom_exam_results_parser.rb +208 -0
  558. data/lib/studium/parsers/parse_lva_dates.rb +190 -0
  559. data/lib/studium/pdf/README.md +2 -0
  560. data/lib/studium/pdf/create_pdf_file_for_this_exam_topic.rb +277 -0
  561. data/lib/studium/project/project.rb +80 -0
  562. data/lib/studium/requires/common_popular_requires.rb +37 -0
  563. data/lib/studium/requires/commonly_used_requires.rb +13 -0
  564. data/lib/studium/requires/require_class_exams_solved.rb +7 -0
  565. data/lib/studium/requires/require_ects_scripts.rb +25 -0
  566. data/lib/studium/requires/require_encoding.rb +7 -0
  567. data/lib/studium/requires/require_the_exam_scripts.rb +37 -0
  568. data/lib/studium/requires/require_the_studium_constants.rb +14 -0
  569. data/lib/studium/requires/require_the_studium_project.rb +47 -0
  570. data/lib/studium/requires/require_the_utility_scripts.rb +26 -0
  571. data/lib/studium/requires/require_toplevel_methods.rb +26 -0
  572. data/lib/studium/requires/require_upcoming_exams.rb +7 -0
  573. data/lib/studium/requires/require_yaml.rb +7 -0
  574. data/lib/studium/requires/with_GUI.rb +12 -0
  575. data/lib/studium/requires/www_mode.rb +17 -0
  576. data/lib/studium/sinatra/app.rb +225 -0
  577. data/lib/studium/sinatra/misc.rb +111 -0
  578. data/lib/studium/statistics/README.md +4 -0
  579. data/lib/studium/statistics/best_exam_months.rb +81 -0
  580. data/lib/studium/statistics/curriculum_comparer.rb +344 -0
  581. data/lib/studium/statistics/determine_exam_statistics_from_this_file.rb +140 -0
  582. data/lib/studium/statistics/max_stats.rb +171 -0
  583. data/lib/studium/statistics/report_how_many_ects_points_per_curriculum_were_completed.rb +172 -0
  584. data/lib/studium/statistics/report_how_many_exam_questions_were_answered.rb +478 -0
  585. data/lib/studium/statistics/show_exam_statistics.rb +60 -0
  586. data/lib/studium/statistics/top_stats.rb +122 -0
  587. data/lib/studium/steop/README.md +4 -0
  588. data/lib/studium/steop/show_all_steop_lectures.rb +101 -0
  589. data/lib/studium/steop/steop_lectures_in_this_curriculum.rb +291 -0
  590. data/lib/studium/steop/steop_lva_dates.rb +102 -0
  591. data/lib/studium/toplevel_methods/all_passed_exams.rb +35 -0
  592. data/lib/studium/toplevel_methods/already_solved_this_lecture.rb +98 -0
  593. data/lib/studium/toplevel_methods/available_curricula.rb +71 -0
  594. data/lib/studium/toplevel_methods/available_topics.rb +145 -0
  595. data/lib/studium/toplevel_methods/average_grade.rb +141 -0
  596. data/lib/studium/toplevel_methods/calculate_pr/303/274fungsimmanente_lectures_from_this_file.rb +55 -0
  597. data/lib/studium/toplevel_methods/cd.rb +25 -0
  598. data/lib/studium/toplevel_methods/cd_stud.rb +134 -0
  599. data/lib/studium/toplevel_methods/copy_the_last_backup_of_file_lecture_information.rb +27 -0
  600. data/lib/studium/toplevel_methods/determine_local_directory_of_this_lecture.rb +72 -0
  601. data/lib/studium/toplevel_methods/does_this_course_require_mandatory_presence.rb +44 -0
  602. data/lib/studium/toplevel_methods/download.rb +157 -0
  603. data/lib/studium/toplevel_methods/e.rb +16 -0
  604. data/lib/studium/toplevel_methods/ects_from_lectures.rb +251 -0
  605. data/lib/studium/toplevel_methods/editor.rb +64 -0
  606. data/lib/studium/toplevel_methods/esystem.rb +22 -0
  607. data/lib/studium/toplevel_methods/exams_dataset.rb +45 -0
  608. data/lib/studium/toplevel_methods/filter_away_invalid_questions.rb +77 -0
  609. data/lib/studium/toplevel_methods/find_exam_topic_and_exam_title.rb +2771 -0
  610. data/lib/studium/toplevel_methods/from_curriculum_id_to_university.rb +47 -0
  611. data/lib/studium/toplevel_methods/frozen.rb +32 -0
  612. data/lib/studium/toplevel_methods/handle_archive_of_the_exam_questions.rb +136 -0
  613. data/lib/studium/toplevel_methods/has_a_bachelor_or_master_curriculum.rb +84 -0
  614. data/lib/studium/toplevel_methods/has_this_lecture_been_already_passed_but_the_id_was_changed_lateron.rb +41 -0
  615. data/lib/studium/toplevel_methods/has_this_module_been_completed.rb +206 -0
  616. data/lib/studium/toplevel_methods/install_the_project_on_the_given_hostsystem.rb +32 -0
  617. data/lib/studium/toplevel_methods/is_on_roebe.rb +26 -0
  618. data/lib/studium/toplevel_methods/is_this_exam_topic_included.rb +46 -0
  619. data/lib/studium/toplevel_methods/is_this_homepage_registered.rb +31 -0
  620. data/lib/studium/toplevel_methods/is_this_lecture_a_practical_course.rb +100 -0
  621. data/lib/studium/toplevel_methods/is_this_lecture_part_of_the_vector_curriculum.rb +110 -0
  622. data/lib/studium/toplevel_methods/is_this_lecture_registered_in_upcoming_exams.rb +43 -0
  623. data/lib/studium/toplevel_methods/lecture_information.rb +101 -0
  624. data/lib/studium/toplevel_methods/lectures_without_attribution_to_any_curriculum.rb +42 -0
  625. data/lib/studium/toplevel_methods/lva_numbers.rb +339 -0
  626. data/lib/studium/toplevel_methods/main_dataset.rb +73 -0
  627. data/lib/studium/toplevel_methods/map_curriculum_number_to_curriculum_name.rb +97 -0
  628. data/lib/studium/toplevel_methods/methods_related_to_curricula.rb +47 -0
  629. data/lib/studium/toplevel_methods/methods_related_to_files.rb +197 -0
  630. data/lib/studium/toplevel_methods/mkdir.rb +25 -0
  631. data/lib/studium/toplevel_methods/n_questions_available.rb +128 -0
  632. data/lib/studium/toplevel_methods/n_topics_available.rb +63 -0
  633. data/lib/studium/toplevel_methods/name_of_this_curriculum.rb +38 -0
  634. data/lib/studium/toplevel_methods/names_of_all_solved_exams.rb +71 -0
  635. data/lib/studium/toplevel_methods/note_down_the_start_time_and_how_many_exams_have_been_already_solved.rb +70 -0
  636. data/lib/studium/toplevel_methods/opnn.rb +25 -0
  637. data/lib/studium/toplevel_methods/passed_this_exam_on.rb +105 -0
  638. data/lib/studium/toplevel_methods/pristine.rb +69 -0
  639. data/lib/studium/toplevel_methods/read_dataset_from_a_curriculum_file.rb +133 -0
  640. data/lib/studium/toplevel_methods/read_delay_between_questions_from_file.rb +34 -0
  641. data/lib/studium/toplevel_methods/regexes.rb +90 -0
  642. data/lib/studium/toplevel_methods/registered_for_this_exam.rb +62 -0
  643. data/lib/studium/toplevel_methods/remote_url.rb +57 -0
  644. data/lib/studium/toplevel_methods/remove_comments.rb +26 -0
  645. data/lib/studium/toplevel_methods/remove_exam_topics_that_were_already_answered.rb +27 -0
  646. data/lib/studium/toplevel_methods/remove_tags.rb +26 -0
  647. data/lib/studium/toplevel_methods/report.rb +143 -0
  648. data/lib/studium/toplevel_methods/report_all_lectures_matching_this_lecture_type.rb +45 -0
  649. data/lib/studium/toplevel_methods/report_attributed_lectures_to_universities.rb +30 -0
  650. data/lib/studium/toplevel_methods/report_n_ects_per_university.rb +63 -0
  651. data/lib/studium/toplevel_methods/report_n_entries_in_the_file_lecture_information.rb +36 -0
  652. data/lib/studium/toplevel_methods/report_nquestions_of.rb +96 -0
  653. data/lib/studium/toplevel_methods/report_solved_topics.rb +56 -0
  654. data/lib/studium/toplevel_methods/return_all_exams_on_this_day.rb +66 -0
  655. data/lib/studium/toplevel_methods/return_curriculum_of_this_lva_number.rb +82 -0
  656. data/lib/studium/toplevel_methods/return_dataset_for_this_exam_topic.rb +41 -0
  657. data/lib/studium/toplevel_methods/return_dataset_from_this_curriculum_file.rb +150 -0
  658. data/lib/studium/toplevel_methods/return_directory_for.rb +66 -0
  659. data/lib/studium/toplevel_methods/return_div_timetable_of_upcoming_exams.rb +489 -0
  660. data/lib/studium/toplevel_methods/return_ects_from_this_lecture_stored_in_the_file_lecture_information.rb +197 -0
  661. data/lib/studium/toplevel_methods/return_hash_of_already_solved_lectures.rb +41 -0
  662. data/lib/studium/toplevel_methods/return_local_path_of_this_pwdstud.rb +59 -0
  663. data/lib/studium/toplevel_methods/return_lva_number_of_this_lecture.rb +72 -0
  664. data/lib/studium/toplevel_methods/return_n_percent_solved_from_this_topic.rb +75 -0
  665. data/lib/studium/toplevel_methods/return_n_questions_were_answered_for_this_topic.rb +37 -0
  666. data/lib/studium/toplevel_methods/return_proper_university_image.rb +80 -0
  667. data/lib/studium/toplevel_methods/return_question_answer_string_from_this_topic.rb +56 -0
  668. data/lib/studium/toplevel_methods/return_sanitized_dataset_from_the_file_lecture_information.rb +126 -0
  669. data/lib/studium/toplevel_methods/return_theme_of_the_next_upcoming_exam.rb +38 -0
  670. data/lib/studium/toplevel_methods/return_this_curriculum_as_a_string.rb +26 -0
  671. data/lib/studium/toplevel_methods/return_title_from_this_curriculum_file.rb +91 -0
  672. data/lib/studium/toplevel_methods/rinstall2.rb +34 -0
  673. data/lib/studium/toplevel_methods/rti_conflict.rb +29 -0
  674. data/lib/studium/toplevel_methods/runmode.rb +86 -0
  675. data/lib/studium/toplevel_methods/sanitize_this_theme_topic.rb +128 -0
  676. data/lib/studium/toplevel_methods/sanitized_dataset_from_file_passed_exams_per_month.rb +52 -0
  677. data/lib/studium/toplevel_methods/save_all_registered_upcoming_exams.rb +62 -0
  678. data/lib/studium/toplevel_methods/save_file.rb +81 -0
  679. data/lib/studium/toplevel_methods/save_this_delay_between_questions_and_answers.rb +43 -0
  680. data/lib/studium/toplevel_methods/set_last_file_for_exam_questions.rb +64 -0
  681. data/lib/studium/toplevel_methods/set_this_cd_alias_to.rb +86 -0
  682. data/lib/studium/toplevel_methods/show_passed_ects_in_the_individual_bachelor_and_master_curricula.rb +81 -0
  683. data/lib/studium/toplevel_methods/show_passed_exams_having_this_grade.rb +27 -0
  684. data/lib/studium/toplevel_methods/spacer.rb +18 -0
  685. data/lib/studium/toplevel_methods/time.rb +220 -0
  686. data/lib/studium/toplevel_methods/total_ects_points_passed.rb +72 -0
  687. data/lib/studium/toplevel_methods/try_to_guess_the_most_likely_lva_id.rb +57 -0
  688. data/lib/studium/toplevel_methods/try_to_return_the_expanded_name_of_this_lecture.rb +63 -0
  689. data/lib/studium/toplevel_methods/unfinished.rb +51 -0
  690. data/lib/studium/toplevel_methods/url.rb +74 -0
  691. data/lib/studium/toplevel_methods/verbose_truth.rb +21 -0
  692. data/lib/studium/toplevel_methods/when_was_this_lecture_passed.rb +53 -0
  693. data/lib/studium/toplevel_methods/yes_or_no_ja_oder_nein.rb +33 -0
  694. data/lib/studium/tu_vienna/README.md +6 -0
  695. data/lib/studium/tu_vienna/tu_ferien.rb +38 -0
  696. data/lib/studium/tu_vienna/tu_/303/266ffnungszeiten.rb +29 -0
  697. data/lib/studium/utility_scripts/attribute_lecture_to_curriculum/attribute_boku_lecture_to_curriculum.rb +389 -0
  698. data/lib/studium/utility_scripts/attribute_lecture_to_curriculum/attribute_lecture_to_curriculum.rb +236 -0
  699. data/lib/studium/utility_scripts/attribute_lectures_to_university/attribute_lectures_to_university.rb +385 -0
  700. data/lib/studium/utility_scripts/audio_stats.rb +176 -0
  701. data/lib/studium/utility_scripts/auto_stud/auto_stud.rb +253 -0
  702. data/lib/studium/utility_scripts/auto_stud/constants.rb +23 -0
  703. data/lib/studium/utility_scripts/auto_stud/initialize.rb +23 -0
  704. data/lib/studium/utility_scripts/auto_stud/misc.rb +18 -0
  705. data/lib/studium/utility_scripts/autopurge_this_lecture_date.rb +101 -0
  706. data/lib/studium/utility_scripts/calendar/README.md +2 -0
  707. data/lib/studium/utility_scripts/calendar/calendar.rb +244 -0
  708. data/lib/studium/utility_scripts/calendar/misc.rb +35 -0
  709. data/lib/studium/utility_scripts/check_description_of_these_lectures.rb +224 -0
  710. data/lib/studium/utility_scripts/clean_up_lecture_date.rb +151 -0
  711. data/lib/studium/utility_scripts/current_lectures_belonging_to_both_bachelor_and_master_curriculum.rb +113 -0
  712. data/lib/studium/utility_scripts/currently_participating_in_these_lectures.rb +104 -0
  713. data/lib/studium/utility_scripts/display_lecture_url.rb +117 -0
  714. data/lib/studium/utility_scripts/expand_time_range.rb +422 -0
  715. data/lib/studium/utility_scripts/find_duplicate_lectures.rb +121 -0
  716. data/lib/studium/utility_scripts/finished_exams_at_this_university.rb +94 -0
  717. data/lib/studium/utility_scripts/foreign_language_percentage/constants.rb +28 -0
  718. data/lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb +142 -0
  719. data/lib/studium/utility_scripts/foreign_language_percentage/help.rb +29 -0
  720. data/lib/studium/utility_scripts/foreign_language_percentage/initialize.rb +25 -0
  721. data/lib/studium/utility_scripts/foreign_language_percentage/menu.rb +141 -0
  722. data/lib/studium/utility_scripts/foreign_language_percentage/report.rb +62 -0
  723. data/lib/studium/utility_scripts/foreign_language_percentage/reset.rb +57 -0
  724. data/lib/studium/utility_scripts/foreign_language_percentage/run.rb +19 -0
  725. data/lib/studium/utility_scripts/generate_spreadsheet.rb +349 -0
  726. data/lib/studium/utility_scripts/holidays.rb +143 -0
  727. data/lib/studium/utility_scripts/lecture_downloader.rb +115 -0
  728. data/lib/studium/utility_scripts/lectures_attributed_to_universities.rb +344 -0
  729. data/lib/studium/utility_scripts/lva_nummer.rb +440 -0
  730. data/lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb +321 -0
  731. data/lib/studium/utility_scripts/name_of_this_lva_id.rb +110 -0
  732. data/lib/studium/utility_scripts/new_stud.rb +332 -0
  733. data/lib/studium/utility_scripts/next_week.rb +111 -0
  734. data/lib/studium/utility_scripts/passed_ects_per_year.rb +172 -0
  735. data/lib/studium/utility_scripts/passed_pr/303/274fungsimmanente_courses/passed_pr/303/274fungsimmanente_courses.rb +181 -0
  736. data/lib/studium/utility_scripts/prepare_individual_curriculum.rb +182 -0
  737. data/lib/studium/utility_scripts/priority.rb +126 -0
  738. data/lib/studium/utility_scripts/priority_points.rb +263 -0
  739. data/lib/studium/utility_scripts/publish_my_exams.rb +174 -0
  740. data/lib/studium/utility_scripts/regexes/README.md +2 -0
  741. data/lib/studium/utility_scripts/regexes/generate_regex.rb +278 -0
  742. data/lib/studium/utility_scripts/regexes/generate_regexes_for_the_available_moodle_links.rb +54 -0
  743. data/lib/studium/utility_scripts/regexes/generate_regexes_for_the_registered_lectures.rb +48 -0
  744. data/lib/studium/utility_scripts/report_outdated_timetable_entries.rb +148 -0
  745. data/lib/studium/utility_scripts/report_total_amount_of_questions_and_answers_for.rb +120 -0
  746. data/lib/studium/utility_scripts/report_whether_this_lecture_is_registered_in_the_file_lecture_information.rb +125 -0
  747. data/lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/individual_resolve_practical_courses_date_conflicts.rb +257 -0
  748. data/lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb +273 -0
  749. data/lib/studium/utility_scripts/scrape_remote_university_url.rb +146 -0
  750. data/lib/studium/utility_scripts/semester_schedule_creator/semester_container.rb +142 -0
  751. data/lib/studium/utility_scripts/semester_schedule_creator/semester_schedule_creator.rb +381 -0
  752. data/lib/studium/utility_scripts/semesterplaner.rb +289 -0
  753. data/lib/studium/utility_scripts/show_all_lectures.rb +403 -0
  754. data/lib/studium/utility_scripts/show_all_passed_master_lectures.rb +127 -0
  755. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/constants.rb +56 -0
  756. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/do_report_the_upcoming_exams.rb +60 -0
  757. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/help.rb +49 -0
  758. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/initialize.rb +28 -0
  759. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/menu.rb +54 -0
  760. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/misc.rb +214 -0
  761. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/report.rb +118 -0
  762. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/reset.rb +80 -0
  763. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/run.rb +22 -0
  764. data/lib/studium/utility_scripts/show_conflicting_lva_lectures/show_conflicting_lva_lectures.rb +651 -0
  765. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/constants.rb +28 -0
  766. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/menu.rb +62 -0
  767. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/reset.rb +36 -0
  768. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/run.rb +35 -0
  769. data/lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/show_descriptions_of_lectures_belonging_to_this_module.rb +145 -0
  770. data/lib/studium/utility_scripts/show_lecturers/show_lecturers.rb +145 -0
  771. data/lib/studium/utility_scripts/show_lectures/constants.rb +16 -0
  772. data/lib/studium/utility_scripts/show_lectures/help.rb +34 -0
  773. data/lib/studium/utility_scripts/show_lectures/initialize.rb +23 -0
  774. data/lib/studium/utility_scripts/show_lectures/menu.rb +106 -0
  775. data/lib/studium/utility_scripts/show_lectures/misc.rb +582 -0
  776. data/lib/studium/utility_scripts/show_lectures/reset.rb +92 -0
  777. data/lib/studium/utility_scripts/show_lectures/run.rb +27 -0
  778. data/lib/studium/utility_scripts/show_lectures/show_lectures.rb +48 -0
  779. data/lib/studium/utility_scripts/show_lectures_fitting_to_this_language.rb +129 -0
  780. data/lib/studium/utility_scripts/show_lectures_fitting_to_this_theme.rb +100 -0
  781. data/lib/studium/utility_scripts/show_lectures_on_this_day.rb +154 -0
  782. data/lib/studium/utility_scripts/show_lva_dates_of_this_lecture.rb +177 -0
  783. data/lib/studium/utility_scripts/show_outdated_lva_dates.rb +218 -0
  784. data/lib/studium/utility_scripts/show_solved_english_lectures.rb +139 -0
  785. data/lib/studium/utility_scripts/show_the_associated_lectures_for_the_individual_curriculum.rb +285 -0
  786. data/lib/studium/utility_scripts/studienkennzahl.rb +109 -0
  787. data/lib/studium/utility_scripts/studium_skeleton.rb +220 -0
  788. data/lib/studium/utility_scripts/stundenplan.rb +603 -0
  789. data/lib/studium/utility_scripts/sync_studium_relevant_entries_one_level_downwards.rb +221 -0
  790. data/lib/studium/utility_scripts/ufind.rb +101 -0
  791. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/constants.rb +31 -0
  792. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/run.rb +20 -0
  793. data/lib/studium/utility_scripts/upcoming_mandatory_presence_courses/upcoming_mandatory_presence_courses.rb +179 -0
  794. data/lib/studium/utility_scripts/vorbesprechungen.rb +293 -0
  795. data/lib/studium/utility_scripts/week_parser/constants.rb +28 -0
  796. data/lib/studium/utility_scripts/week_parser/help.rb +32 -0
  797. data/lib/studium/utility_scripts/week_parser/menu.rb +56 -0
  798. data/lib/studium/utility_scripts/week_parser/misc.rb +51 -0
  799. data/lib/studium/utility_scripts/week_parser/reset.rb +55 -0
  800. data/lib/studium/utility_scripts/week_parser/run.rb +18 -0
  801. data/lib/studium/utility_scripts/week_parser/show.rb +242 -0
  802. data/lib/studium/utility_scripts/week_parser/week_parser.rb +362 -0
  803. data/lib/studium/utility_scripts/weekday_parser.rb +159 -0
  804. data/lib/studium/utility_scripts/weekly_schedule.rb +209 -0
  805. data/lib/studium/utility_scripts/wochenplanung.rb +278 -0
  806. data/lib/studium/version/version.rb +46 -0
  807. data/lib/studium/www/curricula_displayer.cgi +170 -0
  808. data/lib/studium/www/curriculum_displayer.rb +162 -0
  809. data/lib/studium/www/exams.cgi +50 -0
  810. data/lib/studium/www/statistics.cgi +55 -0
  811. data/lib/studium/yaml/allowed_themes_for_exams.yml +307 -0
  812. data/lib/studium/yaml/array_allowed_entries_for_the_file_lecture_information.yml +68 -0
  813. data/lib/studium/yaml/backlog_of_exams.yml +35 -0
  814. data/lib/studium/yaml/current_exams.yml +19 -0
  815. data/lib/studium/yaml/curricula.yml +530 -0
  816. data/lib/studium/yaml/curricula/README.md +3 -0
  817. data/lib/studium/yaml/curricula/bachelor_agrarwissenschaften_033255.yml +130 -0
  818. data/lib/studium/yaml/curricula/bachelor_biologie_basisblock_033630.yml +65 -0
  819. data/lib/studium/yaml/curricula/bachelor_biologie_botanik_033630.yml +84 -0
  820. data/lib/studium/yaml/curricula/bachelor_biologie_ecology_033630.yml +74 -0
  821. data/lib/studium/yaml/curricula/bachelor_biologie_mikrobiologie_und_genetik_033630.yml +120 -0
  822. data/lib/studium/yaml/curricula/bachelor_biologie_molekulare_biologie_033630.yml +104 -0
  823. data/lib/studium/yaml/curricula/bachelor_biologie_zoologie_033630.yml +87 -0
  824. data/lib/studium/yaml/curricula/bachelor_chemie_033662.yml +164 -0
  825. data/lib/studium/yaml/curricula/bachelor_dummy_curriculum.yml +135 -0
  826. data/lib/studium/yaml/curricula/bachelor_elektrotechnik_und_informationstechnik_033235.yml +13 -0
  827. data/lib/studium/yaml/curricula/bachelor_forstwirtschaft_033225.yml +105 -0
  828. data/lib/studium/yaml/curricula/bachelor_informatik_033521.yml +130 -0
  829. data/lib/studium/yaml/curricula/bachelor_informatik_und_molekulare_biologie.yml +1144 -0
  830. data/lib/studium/yaml/curricula/bachelor_ktww_033231.yml +84 -0
  831. data/lib/studium/yaml/curricula/bachelor_lmbt_033217.yml +108 -0
  832. data/lib/studium/yaml/curricula/bachelor_medizinische_informatik_033533.yml +200 -0
  833. data/lib/studium/yaml/curricula/bachelor_molekularbiologie_033665.yml +93 -0
  834. data/lib/studium/yaml/curricula/bachelor_nutrition_science_033638.yml +117 -0
  835. data/lib/studium/yaml/curricula/bachelor_pharmazie_033305.yml +170 -0
  836. data/lib/studium/yaml/curricula/bachelor_technische_chemie_033290.yml +129 -0
  837. data/lib/studium/yaml/curricula/bachelor_technische_informatik_033535.yml +23 -0
  838. data/lib/studium/yaml/curricula/bachelor_ubrm_033227.yml +140 -0
  839. data/lib/studium/yaml/curricula/bachelor_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology.yml +1157 -0
  840. data/lib/studium/yaml/curricula/bachelor_verfahrenstechnik_033273.yml +167 -0
  841. data/lib/studium/yaml/curricula/bachelor_wirtschaftsinformatik_033526.yml +29 -0
  842. data/lib/studium/yaml/curricula/master_bioinformatics_and_molecular_biotechnology_including_aspects_from_molecular_medicine.yml +438 -0
  843. data/lib/studium/yaml/curricula/master_bioinformatik_066875.yml +76 -0
  844. data/lib/studium/yaml/curricula/master_biologie_molekulare_mikrobiologie_mikrobielle_oekologie_und_immunbiologie_066830.yml +78 -0
  845. data/lib/studium/yaml/curricula/master_biologische_chemie_066863.yml +61 -0
  846. data/lib/studium/yaml/curricula/master_dummy_curriculum.yml +137 -0
  847. data/lib/studium/yaml/curricula/master_food_science_and_plant_biotechnology.yml +30 -0
  848. data/lib/studium/yaml/curricula/master_genetik_und_entwicklungsbiologie_066877.yml +90 -0
  849. data/lib/studium/yaml/curricula/master_lmbt_066418.yml +65 -0
  850. data/lib/studium/yaml/curricula/master_molekulare_biologie_066834.yml +142 -0
  851. data/lib/studium/yaml/curricula/master_pharmazie_066605.yml +170 -0
  852. data/lib/studium/yaml/curricula/master_technische_chemie_066490.yml +123 -0
  853. data/lib/studium/yaml/curricula/master_vector_based_strategies_in_life_sciences_molecular_medicine_and_biotechnology.yml +741 -0
  854. data/lib/studium/yaml/custom_colours.yml +21 -0
  855. data/lib/studium/yaml/daily_questions_solved.yml +789 -0
  856. data/lib/studium/yaml/default_delay.yml +4 -0
  857. data/lib/studium/yaml/default_encoding.yml +1 -0
  858. data/lib/studium/yaml/directory_to_the_exam_topics.yml +0 -0
  859. data/lib/studium/yaml/editor.yml +1 -0
  860. data/lib/studium/yaml/file_for_exam_questions.yml +1 -0
  861. data/lib/studium/yaml/german/README.md +2 -0
  862. data/lib/studium/yaml/german/german_to_english_month_names.yml +16 -0
  863. data/lib/studium/yaml/grouped_themes.yml +187 -0
  864. data/lib/studium/yaml/holidays.yml +176 -0
  865. data/lib/studium/yaml/important_exams.yml +194 -0
  866. data/lib/studium/yaml/inscription_dates_of_universities.yml +58 -0
  867. data/lib/studium/yaml/lecture_aliases.yml +108 -0
  868. data/lib/studium/yaml/lecture_information.yml +47783 -0
  869. data/lib/studium/yaml/log_dir.yml +1 -0
  870. data/lib/studium/yaml/main_topic.yml +11 -0
  871. data/lib/studium/yaml/max_stats.yml +227 -0
  872. data/lib/studium/yaml/mitteilungsbl/303/244tter.yml +315 -0
  873. data/lib/studium/yaml/n_total_questions.yml +1 -0
  874. data/lib/studium/yaml/participating_in_these_courses.yml +50 -0
  875. data/lib/studium/yaml/rename_konsole_tab.yml +1 -0
  876. data/lib/studium/yaml/show_topic.yml +1 -0
  877. data/lib/studium/yaml/statistics.yml +57 -0
  878. data/lib/studium/yaml/use_colours.yml +1 -0
  879. data/studium.gemspec +79 -0
  880. data/test/testing_studium.rb +244 -0
  881. data/test/testing_time_component.rb +29 -0
  882. metadata +1079 -0
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'studium/base/editor.rb'
6
+ # =========================================================================== #
7
+ module Studium
8
+
9
+ class Base
10
+
11
+ require 'studium/constants/editor.rb'
12
+ require 'studium/toplevel_methods/editor.rb'
13
+
14
+ # ========================================================================= #
15
+ # === open_in_editor
16
+ # ========================================================================= #
17
+ def open_in_editor(i)
18
+ Studium.open_in_editor(i)
19
+ end
20
+
21
+ # ========================================================================= #
22
+ # === editor?
23
+ # ========================================================================= #
24
+ def editor?
25
+ Studium.editor?
26
+ end
27
+
28
+ end; end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'studium/base/encoding.rb'
6
+ # =========================================================================== #
7
+ module Studium # === Studium
8
+
9
+ class Base
10
+
11
+ require 'studium/requires/require_encoding.rb'
12
+
13
+ # ========================================================================= #
14
+ # === encoding?
15
+ #
16
+ # This method will return the main encoding in use, by "pointing" towards
17
+ # the constant that keeps track of this.
18
+ # ========================================================================= #
19
+ def encoding?
20
+ MAIN_ENCODING
21
+ end; alias main_encoding? encoding? # === main_encoding?
22
+ alias main_encoding_to_use? encoding? # === main_encoding_to_use?
23
+ alias use_this_encoding? encoding? # === use_this_encoding?
24
+ alias encoding_to_use? encoding? # === encoding_to_use?
25
+
26
+ # ========================================================================= #
27
+ # === ensure_main_encoding
28
+ #
29
+ # This method will ensure that we will have the right encoding set.
30
+ # ========================================================================= #
31
+ def ensure_main_encoding(i)
32
+ ::Studium.ensure_main_encoding(i)
33
+ end; alias use_correct_encoding ensure_main_encoding # === use_correct_encoding
34
+ alias sanitize_encoding ensure_main_encoding # === sanitize_encoding
35
+
36
+ end; end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'studium/base/esystem.rb'
6
+ # =========================================================================== #
7
+ module Studium
8
+
9
+ class Base
10
+
11
+ require 'studium/toplevel_methods/esystem.rb'
12
+ # ========================================================================= #
13
+ # === esystem
14
+ # ========================================================================= #
15
+ def esystem(i)
16
+ if i.is_a? Array
17
+ i.each {|entry| esystem(entry) }
18
+ else
19
+ Studium.esystem(i)
20
+ end
21
+ end
22
+
23
+ end; end
@@ -0,0 +1,66 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # The minimal-prototype will not include a lot of things - but one thing
6
+ # that it must definitely include is the e() method, for output, and the
7
+ # various colour-related methods, such as sfancy. It will also include
8
+ # reset() as this will be commonly called in a subclass as-is. Other than
9
+ # that, the no_file_at() method is also commonly needed, so this will
10
+ # be included as well. exit_program() was also added into this file,
11
+ # during the changes in October 2020.
12
+ # =========================================================================== #
13
+ # require 'studium/base/minimal_prototype.rb'
14
+ # =========================================================================== #
15
+ module Studium
16
+
17
+ class Base
18
+
19
+ require 'studium/base/colours.rb'
20
+ require 'studium/base/reset.rb'
21
+
22
+ # ========================================================================= #
23
+ # === e (e tag)
24
+ # ========================================================================= #
25
+ def e(i = '')
26
+ puts i
27
+ end
28
+
29
+ # ========================================================================= #
30
+ # === ee (ee tag)
31
+ #
32
+ # This is just a wrapper over print, essentially.
33
+ # ========================================================================= #
34
+ def ee(i = '')
35
+ print i
36
+ end
37
+
38
+ # ========================================================================= #
39
+ # === no_file_at
40
+ # ========================================================================= #
41
+ def no_file_at(i)
42
+ e "#{rev}No file exists at #{sfile(i)}."
43
+ end; alias no_file_exists_at no_file_at # === no_file_exists_at
44
+
45
+ # ========================================================================= #
46
+ # === exit_program (exit tag)
47
+ #
48
+ # Use this method to exit from the program. It is a general "exit-operation"
49
+ # for classes in the Studium project. The reason as to why we don't just
50
+ # simply use exit() is so that we
51
+ # ========================================================================= #
52
+ def exit_program(
53
+ make_newline = :no_newline
54
+ )
55
+ case make_newline
56
+ # ======================================================================= #
57
+ # === :no_newline
58
+ # ======================================================================= #
59
+ when :no_newline
60
+ make_newline = false
61
+ end
62
+ e(N) if make_newline
63
+ exit # Exit here.
64
+ end
65
+
66
+ end; end
@@ -0,0 +1,854 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'studium/base/misc.rb'
6
+ # =========================================================================== #
7
+ module Studium
8
+
9
+ class Base
10
+
11
+ begin
12
+ require 'roebe/requires/require_kde_konsole.rb'
13
+ rescue LoadError; end
14
+
15
+ require 'studium/colours/colours.rb'
16
+ require 'studium/toplevel_methods/mkdir.rb'
17
+ require 'studium/toplevel_methods/time.rb'
18
+
19
+ require 'studium/toplevel_methods/sanitize_this_theme_topic.rb'
20
+ # ========================================================================= #
21
+ # === sanitize_this_topic (sanitize tag, alias tag)
22
+ #
23
+ # This entry keeps all possible aliases to commonly used topics, in
24
+ # particular abbreviations.
25
+ # ========================================================================= #
26
+ def sanitize_this_topic(this_topic)
27
+ Studium.sanitize_this_theme_topic(this_topic)
28
+ end
29
+
30
+ require 'studium/toplevel_methods/return_sanitized_dataset_from_the_file_lecture_information.rb'
31
+ # ========================================================================= #
32
+ # === return_sanitized_dataset_from_the_file_lecture_information
33
+ #
34
+ # This method will return the dataset stored in the file
35
+ # 'lecture_information.yml'.
36
+ # ========================================================================= #
37
+ def return_sanitized_dataset_from_the_file_lecture_information
38
+ Studium.return_sanitized_dataset_from_the_file_lecture_information
39
+ end; alias return_dataset_from_the_file_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === return_dataset_from_the_file_lecture_information
40
+ alias return_dataset_from_file_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === return_dataset_from_file_lecture_information
41
+ alias lecture_information_dataset return_sanitized_dataset_from_the_file_lecture_information # === lecture_information_dataset
42
+ alias lecture_information return_sanitized_dataset_from_the_file_lecture_information # === lecture_information_dataset
43
+ alias dataset_from_file_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === dataset_from_file_lecture_information
44
+ alias dataset_from_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === dataset_from_lecture_information
45
+ alias dataset_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === dataset_lecture_information
46
+ alias return_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === return_lecture_information
47
+ alias return_data_from_the_file_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === return_data_from_the_file_lecture_information
48
+ alias return_all_lectures return_sanitized_dataset_from_the_file_lecture_information # === return_all_lectures
49
+ alias return_lectures_from_file_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === return_lectures_from_file_lecture_information
50
+ alias dataset_from_the_file_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === dataset_from_the_file_lecture_information
51
+ alias return_sanitized_dataset_from_file_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === return_sanitized_dataset_from_file_lecture_information
52
+ alias return_dataset_from_the_lectures return_sanitized_dataset_from_the_file_lecture_information # === return_dataset_from_the_lectures
53
+ alias return_sanitized_dataset return_sanitized_dataset_from_the_file_lecture_information # === return_sanitized_dataset
54
+ alias return_all_lectures_from_the_file_lecture_information return_sanitized_dataset_from_the_file_lecture_information # === return_all_lectures_from_the_file_lecture_information
55
+
56
+ # ========================================================================= #
57
+ # === replace_regular_numbers_with_unicode_numbers
58
+ #
59
+ # This method will replace numbers such as 1 with ¹.
60
+ # ========================================================================= #
61
+ def replace_regular_numbers_with_unicode_numbers(i)
62
+ ::Studium.replace_regular_numbers_with_unicode_numbers(i)
63
+ end
64
+
65
+ # ========================================================================= #
66
+ # === delete_file
67
+ # ========================================================================= #
68
+ def delete_file(i)
69
+ File.delete(i) if File.exist? i
70
+ end
71
+
72
+ # ========================================================================= #
73
+ # === register_sigint
74
+ # ========================================================================= #
75
+ def register_sigint
76
+ Signal.trap('SIGINT') { exit }
77
+ end
78
+
79
+ # ========================================================================= #
80
+ # === enable_debug
81
+ # ========================================================================= #
82
+ def enable_debug
83
+ @debug = true
84
+ end; alias do_debug enable_debug # === do_debug
85
+
86
+ # ========================================================================= #
87
+ # === debug?
88
+ # ========================================================================= #
89
+ def debug?
90
+ @debug
91
+ end
92
+
93
+ # ========================================================================= #
94
+ # === be_silent
95
+ # ========================================================================= #
96
+ def be_silent
97
+ @be_verbose = false
98
+ end; alias be_quiet be_silent # === be_quiet
99
+
100
+ # ========================================================================= #
101
+ # === rinstall2
102
+ # ========================================================================= #
103
+ def rinstall2
104
+ cpruby
105
+ system 'ruby setup.rb --quiet config'
106
+ system 'ruby setup.rb --quiet setup'
107
+ system 'ruby setup.rb --quiet install'
108
+ delete_file 'setup.rb'
109
+ delete_file 'InstalledFiles'
110
+ delete_file '.config'
111
+ end
112
+
113
+ # ========================================================================= #
114
+ # === is_a_weekday?
115
+ #
116
+ # This method will return true if the input is a String that represents
117
+ # a weekday, such as "Monday". Otherwise, false will be returned.
118
+ #
119
+ # Both german and english variants are allowed here.
120
+ # ========================================================================= #
121
+ def is_a_weekday?(i = 'Montag')
122
+ result = false
123
+ if ARRAY_GERMAN_WEEKDAYS.include? i
124
+ result = true
125
+ elsif ARRAY_ENGLISH_WEEKDAYS.include? i
126
+ result = true
127
+ end
128
+ return result
129
+ end
130
+
131
+ # ========================================================================= #
132
+ # === do_not_be_verbose
133
+ # ========================================================================= #
134
+ def do_not_be_verbose
135
+ @be_verbose = false
136
+ end
137
+
138
+ # ========================================================================= #
139
+ # === return_directory_for
140
+ #
141
+ # This method will try to build up the most plausible, local path to
142
+ # an existing directory.
143
+ # ========================================================================= #
144
+ def return_directory_for(
145
+ name_of_the_lecture, university
146
+ )
147
+ Studium.return_directory_for(name_of_the_lecture, university)
148
+ end
149
+
150
+ # ========================================================================= #
151
+ # === return_steop_lectures (steop tag)
152
+ #
153
+ # This method will return all registered STEOP lectures.
154
+ #
155
+ # The optional argument will determine whether solved STEOP lectures
156
+ # will also be returned. By default this is not the case, meaning
157
+ # that we will ignore STEOP lectures that have already been solved.
158
+ # ========================================================================= #
159
+ def return_steop_lectures(
160
+ optional_ignore_already_completed_steop_lectures = true
161
+ )
162
+ if ::Studium.main_dataset?
163
+ dataset = ::Studium.main_dataset?
164
+ else
165
+ dataset = return_dataset_from_the_file_lecture_information
166
+ end
167
+ selection = dataset.select {|a, b|
168
+ b.has_key?(:is_a_steop_lecture) and (b[:is_a_steop_lecture] == true)
169
+ }
170
+ if optional_ignore_already_completed_steop_lectures
171
+ selection = selection.reject {|a, b|
172
+ b.has_key?(:already_solved) and (b[:already_solved] == true)
173
+ }
174
+ end
175
+ return selection
176
+ end
177
+
178
+ # ========================================================================= #
179
+ # === no_ext_name
180
+ #
181
+ # This method will return the name of the file (or rather the
182
+ # input given to this method) without extension.
183
+ # ========================================================================= #
184
+ def no_ext_name(i)
185
+ i.sub(/#{File.extname(i)}$/,'')
186
+ end
187
+
188
+ # ========================================================================= #
189
+ # === remove_newlines
190
+ #
191
+ # This method will remove newlines, aka "\n", from Strings and Arrays.
192
+ # ========================================================================= #
193
+ def remove_newlines(i)
194
+ if i.is_a? Array
195
+ i.map {|entry| remove_newlines(entry) }
196
+ else
197
+ i.delete(N)
198
+ end
199
+ end
200
+
201
+ # ========================================================================= #
202
+ # === remove_internal_comments
203
+ # ========================================================================= #
204
+ def remove_internal_comments(i)
205
+ if i.is_a? Array
206
+ i.map {|line|
207
+ if line.include? '#'
208
+ line = line[0 .. (line.index('#')-1)]
209
+ end
210
+ line.strip
211
+ }
212
+ end
213
+ end
214
+
215
+ # ========================================================================= #
216
+ # === remove_leading_comments
217
+ # ========================================================================= #
218
+ def remove_leading_comments(i)
219
+ if i.is_a? Array
220
+ i.reject {|line| line.start_with? '#' }
221
+ end
222
+ end
223
+
224
+ # ========================================================================= #
225
+ # === remove_empty_strings
226
+ #
227
+ # This method presently only works on Arrays. We will reject empty
228
+ # Strings from the Array at hand.
229
+ # ========================================================================= #
230
+ def remove_empty_strings(i)
231
+ if i.is_a? Array
232
+ i.reject {|line| line.empty? }
233
+ end
234
+ end
235
+
236
+ # ========================================================================= #
237
+ # === return_all_numbers_from
238
+ #
239
+ # This method will return all numbers from the given input.
240
+ # ========================================================================= #
241
+ def return_all_numbers_from(i)
242
+ return_this = nil
243
+ if i.is_a? Array
244
+ return_this = i.select {|line|
245
+ line =~ /\d+/ # Any entry with a number will be returned.
246
+ }
247
+ end
248
+ return_this
249
+ end
250
+
251
+ # ========================================================================= #
252
+ # === return_all_steop_lectures
253
+ # ========================================================================= #
254
+ def return_all_steop_lectures
255
+ return_sanitized_dataset_from_the_file_lecture_information.select {|a, b|
256
+ is_a_steop_lecture = obtain(:steop, b)
257
+ is_a_steop_lecture
258
+ }
259
+ end
260
+
261
+ # ========================================================================= #
262
+ # === read_this_file_with_default_encoding
263
+ #
264
+ # This method will read in a file, that should ideally exist, in the
265
+ # default project-wide encoding.
266
+ #
267
+ # A few aliases exist to this method, such as "read_this_file()".
268
+ # ========================================================================= #
269
+ def read_this_file_with_default_encoding(
270
+ this_file
271
+ )
272
+ File.read(this_file, encoding: USE_THIS_ENCODING)
273
+ end; alias read_as_string_with_default_encoding read_this_file_with_default_encoding # === read_as_string_with_default_encoding
274
+ alias read_file read_this_file_with_default_encoding # === read_file
275
+ alias read_this_file read_this_file_with_default_encoding # === read_this_file
276
+ alias read_file_with_default_encoding read_this_file_with_default_encoding # === read_file_with_default_encoding
277
+ alias read_in_with_default_encoding read_this_file_with_default_encoding # === read_in_with_default_encoding
278
+
279
+ require 'studium/toplevel_methods/methods_related_to_files.rb'
280
+ # ========================================================================= #
281
+ # === file_read_with_proper_encoding
282
+ # ========================================================================= #
283
+ def file_read_with_proper_encoding(this_file)
284
+ Studium.file_read_with_proper_encoding(this_file)
285
+ end
286
+
287
+ # ========================================================================= #
288
+ # === create_file
289
+ # ========================================================================= #
290
+ def create_file(i)
291
+ FileUtils.touch(i)
292
+ end; alias touch create_file # === touch
293
+
294
+ # ========================================================================= #
295
+ # === cpruby
296
+ # ========================================================================= #
297
+ def cpruby
298
+ base_dir = ENV['USERS']
299
+ base_dir = '/home' if base_dir.nil?
300
+ path_to_setup_rb_file =
301
+ "#{base_dir}/x/DATA/PROGRAMMING_LANGUAGES/RUBY/src/roebe/lib/roebe/setup/setup.rb"
302
+ copy(path_to_setup_rb_file,'.')
303
+ end
304
+
305
+ # ========================================================================= #
306
+ # === return_lectures_with_at_the_least_one_upcoming_exam
307
+ #
308
+ # This method will return all lectures that have at the least
309
+ # one upcoming exam entry. In this context "upcoming" refers
310
+ # to an exam date that comes after today (or any day before
311
+ # today).
312
+ # ========================================================================= #
313
+ def return_lectures_with_at_the_least_one_upcoming_exam
314
+ today = Time.now
315
+ return_sanitized_dataset_from_the_file_lecture_information.select {|name_of_the_course, hash_dataset|
316
+ if hash_dataset.has_key? 'exams'
317
+ exams = hash_dataset['exams']
318
+ if exams.is_a? Array
319
+ exams = exams.first
320
+ end
321
+ exams = remove_german_weekdays(exams)
322
+ exams.delete!(',')
323
+ time_parsed = Time.parse(exams)
324
+ today < time_parsed # Check that the courses are not too old.
325
+ else
326
+ false
327
+ end
328
+ }
329
+ end
330
+
331
+ require 'studium/toplevel_methods/return_lva_number_of_this_lecture.rb'
332
+ # ========================================================================= #
333
+ # === return_lva_number_of_this_lecture
334
+ # ========================================================================= #
335
+ def return_lva_number_of_this_lecture(this_lecture)
336
+ ::Studium.return_lva_number_of_this_lecture(this_lecture)
337
+ end
338
+
339
+ # ========================================================================= #
340
+ # === copy
341
+ # ========================================================================= #
342
+ def copy(from, to)
343
+ if from.is_a? Array
344
+ from.each {|entry|
345
+ copy(entry, to)
346
+ }
347
+ else
348
+ FileUtils.copy(from, to)
349
+ end
350
+ end; alias copy_file copy # === copy_file
351
+
352
+ require 'studium/constants/file_constants.rb'
353
+ # ========================================================================= #
354
+ # === csv_file?
355
+ # ========================================================================= #
356
+ def csv_file?
357
+ PASSED_EXAMS_PER_MONTH
358
+ end
359
+
360
+ # ========================================================================= #
361
+ # === turn_this_array_into_the_full_dataset
362
+ #
363
+ # This method accepts an Array of lectures that will be replaced with
364
+ # a full dataset.
365
+ # ========================================================================= #
366
+ def turn_this_array_into_the_full_dataset(
367
+ i, use_this_dataset
368
+ )
369
+ hash = {}
370
+ i.flatten.each {|name_of_the_lecture|
371
+ pointer = use_this_dataset[name_of_the_lecture]
372
+ hash[name_of_the_lecture] = pointer
373
+ }
374
+ hash
375
+ end
376
+
377
+ # ========================================================================= #
378
+ # === ensure_that_the_log_directory_exists
379
+ #
380
+ # This method will try to make sure that the log directory exists.
381
+ # ========================================================================= #
382
+ def ensure_that_the_log_directory_exists
383
+ _ = log_dir?
384
+ unless File.directory? _
385
+ mkdir(_)
386
+ end
387
+ end
388
+
389
+ # ========================================================================= #
390
+ # === create_directory
391
+ # ========================================================================= #
392
+ def create_directory(i)
393
+ FileUtils.mkdir_p(i)
394
+ end; alias mkdir create_directory # === mkdir
395
+
396
+ # ========================================================================= #
397
+ # === change_directory
398
+ # ========================================================================= #
399
+ def change_directory(
400
+ i = Dir.pwd
401
+ )
402
+ FileUtils.chdir(i)
403
+ end; alias cd change_directory # === cd
404
+
405
+ # ========================================================================= #
406
+ # === return_passed_courses
407
+ #
408
+ # This method will quickly return all passed courses.
409
+ # ========================================================================= #
410
+ def return_passed_courses
411
+ return_dataset_from_file_lecture_information.select {|key, hash|
412
+ hash.has_key?(:already_solved) and
413
+ (hash[:already_solved] == true)
414
+ }
415
+ end
416
+
417
+ require 'studium/toplevel_methods/return_ects_from_this_lecture_stored_in_the_file_lecture_information.rb'
418
+ # ========================================================================= #
419
+ # === return_ects_points_from_these_lectures
420
+ #
421
+ # Input to this method should be a Hash containing our lectures.
422
+ #
423
+ # An example for this is shown next:
424
+ #
425
+ # {"051010"=>"Programmierung 1",
426
+ # "051110"=>"Mathematische Grundlagen der Informatik 1"}
427
+ #
428
+ # ========================================================================= #
429
+ def return_ects_points_from_these_lectures(hash)
430
+ n_ects_points = 0 # Keep track of the amount of ECTS points here.
431
+ hash.each_pair {|lecture_id, name_of_the_lecture|
432
+ # lecture_id = ensure_main_encoding(lecture_id)
433
+ # name_of_the_lecture = ensure_main_encoding(name_of_the_lecture)
434
+ name_of_the_lecture.squeeze!(' ')
435
+ points = Studium.return_ects_from_this_lecture_stored_in_the_file_lecture_information(
436
+ name_of_the_lecture, lecture_id
437
+ )
438
+ n_ects_points += points
439
+ }
440
+ return n_ects_points
441
+ end
442
+
443
+ # ========================================================================= #
444
+ # === beautiful_url
445
+ #
446
+ # Until 10.12.2019 this exclusively used BeautifulUrl.
447
+ #
448
+ # Since as of 10.12.2019, this method will actually tap into
449
+ # Studium.return_url_from if it is registered.
450
+ # ========================================================================= #
451
+ def beautiful_url(i)
452
+ unless Studium.respond_to? :is_this_url_registered?
453
+ require 'studium/misc/return_remote_homepage_of_this_lecture.rb'
454
+ end
455
+ if Studium.is_this_url_registered?(i)
456
+ i = Studium.return_url_from(i)
457
+ else
458
+ i = BeautifulUrl[i]
459
+ end
460
+ if i.is_a? Array
461
+ i = i.first
462
+ end
463
+ i
464
+ end
465
+
466
+ # ========================================================================= #
467
+ # === load_yaml_dataset
468
+ #
469
+ # This method should ideally be used when a .yml file is to be loaded.
470
+ #
471
+ # The second argument can be used to rescue missing or erroneous
472
+ # yaml files.
473
+ #
474
+ # Invocation example for this is:
475
+ # load_yaml_dataset(:rescue)
476
+ # ========================================================================= #
477
+ def load_yaml_dataset(
478
+ i, do_rescue = false
479
+ )
480
+ case do_rescue
481
+ when :rescue
482
+ do_rescue = true
483
+ end
484
+ if do_rescue
485
+ begin
486
+ YAML.load_file(i)
487
+ rescue LoadError, ArgumentError; end
488
+ else
489
+ YAML.load_file(i)
490
+ end
491
+ end
492
+
493
+ # ========================================================================= #
494
+ # === select_lectures_with_this_key
495
+ #
496
+ # This method allows us to select only entries with a particular
497
+ # key. The key has to be passed to the method and - for now - has
498
+ # to be exactly the same as the key (e. g. string for strings
499
+ # and symbols for symbols; no automatic conversions for now).
500
+ #
501
+ # The advantage of this method is that it will simplify a lot of
502
+ # code; all code that requires us to select only specific
503
+ # lectures.
504
+ #
505
+ # Usage examples:
506
+ # .select_lectures_with_this_key(:exam_registration_at)
507
+ # .select_lectures_with_this_key(:already_solved)
508
+ # ========================================================================= #
509
+ def select_lectures_with_this_key(
510
+ searching_for_this_key
511
+ )
512
+ dataset = return_sanitized_dataset_from_the_file_lecture_information
513
+ dataset.select! {|name_of_the_lecture, inner_hash|
514
+ inner_hash.has_key? searching_for_this_key
515
+ } if dataset # <- Must check here, since there may be a nil.
516
+ return dataset
517
+ end
518
+
519
+ # ========================================================================= #
520
+ # === konsole_support?
521
+ # ========================================================================= #
522
+ def konsole_support?
523
+ true
524
+ end
525
+
526
+ # ========================================================================= #
527
+ # === rename_konsole_tab?
528
+ # ========================================================================= #
529
+ def rename_konsole_tab?(
530
+ i = FILE_RENAME_KONSOLE_TAB
531
+ )
532
+ if File.exist? i
533
+ YAML.load_file(i)
534
+ else
535
+ false
536
+ end
537
+ end
538
+
539
+ # ========================================================================= #
540
+ # === return_dataset_for_this_topic
541
+ # ========================================================================= #
542
+ def return_dataset_for_this_topic(i)
543
+ Studium.return_dataset_for_this_topic(i)
544
+ end
545
+
546
+ # ========================================================================= #
547
+ # === rename_kde_konsole_tab
548
+ # ========================================================================= #
549
+ def rename_kde_konsole_tab(
550
+ title = '.'
551
+ )
552
+ if Object.const_defined?(:Roebe) and
553
+ Roebe.respond_to?(:rename_konsole_title_to)
554
+ Roebe.rename_konsole_title_to(title, :be_quiet)
555
+ end
556
+ end
557
+
558
+ # ========================================================================= #
559
+ # === last_file?
560
+ # ========================================================================= #
561
+ def last_file?
562
+ _ = Studium.file_for_exam_questions
563
+ _ = load_yaml_dataset(_).chomp
564
+ # ======================================================================= #
565
+ # If we are on roebe then we will use another path.
566
+ # ======================================================================= #
567
+ if is_on_roebe?
568
+ _ = Studium::MY_EXAM_TOPICS+File.basename(_)
569
+ end
570
+ return _
571
+ end
572
+
573
+ # ========================================================================= #
574
+ # === cheering_person
575
+ # ========================================================================= #
576
+ def cheering_person
577
+ '\o/'
578
+ end; alias cheering_person? cheering_person # === cheering_person?
579
+ alias cheering_dude? cheering_person # === cheering_dude?
580
+
581
+ # ========================================================================= #
582
+ # === file_lecture_information?
583
+ # ========================================================================= #
584
+ def file_lecture_information?
585
+ ::Studium.file_lecture_information?
586
+ end
587
+
588
+ # ========================================================================= #
589
+ # === return_solved_lectures
590
+ #
591
+ # This method will return only those entries that have the key
592
+ # :already_solved set to true.
593
+ # ========================================================================= #
594
+ def return_solved_lectures
595
+ already_solved = select_lectures_with_this_key(:already_solved).select {|a,b|
596
+ obtain(:already_solved, b) == true
597
+ }
598
+ already_solved
599
+ end
600
+
601
+ # ========================================================================= #
602
+ # === find_corresponding_exam_topic
603
+ #
604
+ # This method will find the corresponding exam topic, based on a short
605
+ # input. For example, "bem1" will be short for basic biochemistry.
606
+ # ========================================================================= #
607
+ def find_corresponding_exam_topic(i)
608
+ Studium.find_corresponding_exam_topic(i)
609
+ end; alias return_file_associated_with_this_exam_topic find_corresponding_exam_topic # === return_file_associated_with_this_exam_topic
610
+
611
+ # ========================================================================= #
612
+ # === return_n_exam_questions_in
613
+ #
614
+ # This method will return how many exam questions are in the given topic
615
+ # xyz.
616
+ # ========================================================================= #
617
+ def return_n_exam_questions_in(this_topic)
618
+ Studium::Exams.return_n_questions_in_this_topic(this_topic)
619
+ end
620
+
621
+ # ========================================================================= #
622
+ # === append_what_into (append tag)
623
+ #
624
+ # Use this method to save data into a specific file.
625
+ # ========================================================================= #
626
+ def append_what_into(what, into)
627
+ Studium.append_what_into(what, into)
628
+ end
629
+
630
+ # ========================================================================= #
631
+ # === write_what_into
632
+ #
633
+ # Use this method to save data into a specific file.
634
+ # ========================================================================= #
635
+ def write_what_into(what, into)
636
+ Studium.write_what_into(what, into)
637
+ end; alias store_what_into write_what_into # === store_what_into
638
+
639
+ # ========================================================================= #
640
+ # === is_connected_to_the_www?
641
+ # ========================================================================= #
642
+ def is_connected_to_the_www?
643
+ !@no_connection_to_the_www
644
+ end
645
+
646
+ # ========================================================================= #
647
+ # === sanitize_url
648
+ #
649
+ # This is such a useful method that we will use it for all subclasses
650
+ # of Studium::Base.
651
+ # ========================================================================= #
652
+ def sanitize_url(i, optional_extra_modes = nil)
653
+ Studium.sanitize_url(i, optional_extra_modes)
654
+ end; alias sanitized_url sanitize_url # === sanitized_url
655
+
656
+ # ========================================================================= #
657
+ # === web_liner
658
+ # ========================================================================= #
659
+ def web_liner(this_token = '*')
660
+ (this_token * 80)+N
661
+ end
662
+
663
+ # ========================================================================= #
664
+ # === base_dir?
665
+ #
666
+ # This is the log dir - where we "operate on".
667
+ # ========================================================================= #
668
+ def base_dir?
669
+ Studium.log_dir?
670
+ end; alias log_dir? base_dir? # === log_dir?
671
+
672
+ # ========================================================================= #
673
+ # === already_solved_this_lva_number?
674
+ # ========================================================================= #
675
+ def already_solved_this_lva_number?(i)
676
+ Studium.already_solved_this_lva_number?(i)
677
+ end
678
+
679
+ # ========================================================================= #
680
+ # === www_connection_is_unavailable
681
+ # ========================================================================= #
682
+ def www_connection_is_unavailable
683
+ @no_connection_to_the_www = true
684
+ end; alias www_is_unavailable www_connection_is_unavailable # === www_is_unavailable
685
+
686
+ # require 'studium/toplevel_methods/return_n_questions_were_answered_for_this_topic.rb'
687
+ # ^^^ this is already required elsewhere.
688
+ # ========================================================================= #
689
+ # === return_n_questions_were_answered_for_this_topic
690
+ # ========================================================================= #
691
+ def return_n_questions_were_answered_for_this_topic(i)
692
+ Studium::Exams.return_n_questions_were_answered_for_this_topic(i)
693
+ end
694
+
695
+ # ========================================================================= #
696
+ # === return_pwd
697
+ # ========================================================================= #
698
+ def return_pwd
699
+ "#{Dir.pwd}/".squeeze('/')
700
+ end; alias pwd? return_pwd # === pwd?
701
+
702
+ require 'studium/toplevel_methods/is_on_roebe.rb'
703
+ # ========================================================================= #
704
+ # === is_on_roebe?
705
+ # ========================================================================= #
706
+ def is_on_roebe?
707
+ Studium.is_on_roebe?
708
+ end; alias is_roebe? is_on_roebe? # === is_roebe?
709
+ alias on_roebe? is_on_roebe? # === on_roebe?
710
+
711
+ require 'studium/toplevel_methods/does_this_course_require_mandatory_presence.rb'
712
+ # ========================================================================= #
713
+ # === is_prüfungsimmanent?
714
+ #
715
+ # This method can determine whether a course is "prüfungsimmanent",
716
+ # aka whether this course requires continuous, mandatory presence
717
+ # (of the student).
718
+ #
719
+ # The argument to this method should be the type of the lecture at
720
+ # hand, such as "VO" or "VU" or "SE" or "PR", as a String.
721
+ #
722
+ # The method will always return a boolean value, aka true or
723
+ # false. If true is the return value then this means that "yes,
724
+ # this course requires mandatory presence".
725
+ # ========================================================================= #
726
+ def is_prüfungsimmanent?(
727
+ i, ignore_these_types = nil
728
+ )
729
+ Studium.is_prüfungsimmanent?(i, ignore_these_types)
730
+ end; alias is_a_prüfungsimmanent_course? is_prüfungsimmanent? # === is_a_prüfungsimmanent_course?
731
+ alias is_this_a_prüfungsimment_course? is_prüfungsimmanent? # === is_this_a_prüfungsimment_course?
732
+
733
+ # ========================================================================= #
734
+ # === return_opnn
735
+ # ========================================================================= #
736
+ def return_opnn(
737
+ use_this_namespace = NAMESPACE
738
+ )
739
+ ::Colours::GREY+
740
+ use_this_namespace+
741
+ ': '+
742
+ ::Colours::REVERT
743
+ end; alias ropnn return_opnn # === ropnn
744
+
745
+ require 'studium/toplevel_methods/available_topics.rb'
746
+ # ========================================================================= #
747
+ # === available_topics_as_short_name
748
+ # ========================================================================= #
749
+ def available_topics_as_short_name
750
+ ::Studium::Exams.all_topics_as_short_name.sort
751
+ end; alias available_topics? available_topics_as_short_name # === available_topics?
752
+ alias return_all_exam_topics available_topics_as_short_name # === return_all_exam_topics
753
+
754
+ require 'studium/toplevel_methods/spacer.rb'
755
+ # ========================================================================= #
756
+ # === spacer
757
+ # ========================================================================= #
758
+ def spacer
759
+ Studium.spacer
760
+ end
761
+
762
+ require 'studium/toplevel_methods/set_this_cd_alias_to.rb'
763
+ # ========================================================================= #
764
+ # === set_this_cd_alias_to
765
+ # ========================================================================= #
766
+ def set_this_cd_alias_to(
767
+ cd_alias, new_content, be_verbose = :default
768
+ )
769
+ Studium.set_this_cd_alias_to(cd_alias, new_content, be_verbose)
770
+ end
771
+
772
+ require 'studium/toplevel_methods/return_all_exams_on_this_day.rb'
773
+ # ========================================================================= #
774
+ # === return_all_exams_on_this_day
775
+ # ========================================================================= #
776
+ def return_all_exams_on_this_day(i)
777
+ Studium.return_all_exams_on_this_day(i)
778
+ end
779
+
780
+ require 'studium/toplevel_methods/average_grade.rb'
781
+ # ========================================================================= #
782
+ # === average_grade
783
+ # ========================================================================= #
784
+ def average_grade(
785
+ i = :default,
786
+ round_to = 2 # ← Round to two numbers.
787
+ )
788
+ Studium.average_grade(i, round_to)
789
+ end
790
+
791
+ require 'studium/logging/html_log_directory.rb'
792
+ # ========================================================================= #
793
+ # === html_log_dir?
794
+ # ========================================================================= #
795
+ def html_log_directory?
796
+ Studium.html_log_directory?
797
+ end; alias html_log_dir? html_log_directory? # === html_log_dir?
798
+
799
+ require 'studium/toplevel_methods/return_local_path_of_this_pwdstud.rb'
800
+ # ========================================================================= #
801
+ # === return_local_path_of_this_pwdstud
802
+ # ========================================================================= #
803
+ def return_local_path_of_this_pwdstud(i = 1)
804
+ Studium.return_local_path_of_this_pwdstud(i)
805
+ end
806
+
807
+ require 'studium/toplevel_methods/total_ects_points_passed.rb'
808
+ # ========================================================================= #
809
+ # === total_ects_points_passed
810
+ # ========================================================================= #
811
+ def total_ects_points_passed(i)
812
+ Studium.total_ects_points_passed(i)
813
+ end
814
+
815
+ require 'studium/toplevel_methods/find_exam_topic_and_exam_title.rb'
816
+ # ========================================================================= #
817
+ # === expand_topic
818
+ #
819
+ # This will expand e. g. 'allgemeine_genetik' to 'Allgemeine Genetik'.
820
+ # ========================================================================= #
821
+ def expand_topic(i)
822
+ Studium.find_corresponding_exam_title(i)
823
+ end; alias find_corresponding_exam_title expand_topic # === find_corresponding_exam_title
824
+
825
+ # ========================================================================= #
826
+ # === directory_to_my_exam_topics
827
+ # ========================================================================= #
828
+ def directory_to_my_exam_topics
829
+ Studium.directory_to_my_exam_topics
830
+ end
831
+
832
+ # ========================================================================= #
833
+ # === directory_to_the_exam_topics?
834
+ # ========================================================================= #
835
+ def directory_to_the_exam_topics?
836
+ Studium.directory_to_the_exam_topics?
837
+ end; alias path_to_exam_topic? directory_to_the_exam_topics? # === path_to_exam_topic?
838
+ alias directory_of_the_exam_topics? directory_to_the_exam_topics? # === directory_of_the_exam_topics?
839
+
840
+ # ========================================================================= #
841
+ # === be_verbose?
842
+ # ========================================================================= #
843
+ def be_verbose?
844
+ @be_verbose
845
+ end
846
+
847
+ # ========================================================================= #
848
+ # === set_be_verbose
849
+ # ========================================================================= #
850
+ def set_be_verbose
851
+ @be_verbose = true
852
+ end; alias be_verbose set_be_verbose # === be_verbose
853
+
854
+ end; end