studium 0.9.383

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

Potentially problematic release.


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

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