Class: Studium::Exams::UpcomingExamsDataset
- Defined in:
- lib/studium/exams/upcoming_exams_dataset.rb
Constant Summary collapse
- NAMESPACE =
#
NAMESPACE
#
inspect- REGEX_FOR_DD_MM_YYYY_NOTATION =
#
REGEX_FOR_DD_MM_YYYY_NOTATION
#
/(\d{1,2}\.\d{1,2}\.\d{4}),/- REGEX_FOR_THE_EXACT_TIME_ON_THE_EXAM_DAY =
#
REGEX_FOR_THE_EXACT_TIME_ON_THE_EXAM_DAY
See this URL for checking:
http://rubular.com/r/82GZwIAkV9#
/ (\d{1,2}:\d{1,2}-\d{1,2}:\d{1,2})/
Constants inherited from Base
Base::ARRAY_HTML_COLOURS_IN_USE, Base::CHECK_FOR_INCORRECT_ENTRIES_IN_THE_QUESTION_ANSWER_FILE_THAT_SHOULD_BE_COMMENTS, Base::COLOURS, Base::COMMON_YEAR_DAYS_IN_MONTH, Base::GRAY, Base::LEFT_PADDING, Base::N_CHARACTERS_PER_LINE, Base::UNICODE_RIGHT_ARROW
Constants included from Colours
Instance Method Summary collapse
-
#[](i) ⇒ Object
# === [] =========================================================================== #.
-
#exam_dates? ⇒ Boolean
# === exam_dates? =========================================================================== #.
-
#exam_on_this_day?(i = '08.03.2018') ⇒ Boolean
# === exam_on_this_day?.
-
#has_key?(this_key) ⇒ Boolean
# === has_key? =========================================================================== #.
-
#initialize(run_already = true) ⇒ UpcomingExamsDataset
constructor
# === initialize =========================================================================== #.
-
#load_dataset_from_the_exams_file ⇒ Object
# === load_dataset_from_the_exams_file.
-
#purge_this_line(line) ⇒ Object
# === purge_this_line.
-
#reset ⇒ Object
# === reset =========================================================================== #.
-
#return_date_and_time_of(line) ⇒ Object
# === return_date_and_time_of.
-
#return_most_likely_lecture_name_from_this_line(i = '# === (3) 16.03.2018, 300707, Freitag, Molekulare Infektionsbiologie, Ort: Hörsaal C1 UniCampus Hof 2,Spitalgasse 2,1090 Wien,Beginnzeit(zw. 15-18 Uhr) wird am Dienstag davor bekanntgegeben!') ⇒ Object
# === return_most_likely_lecture_name_from_this_line.
-
#run ⇒ Object
# === run =========================================================================== #.
-
#scan_for_exam_entries_in_the_exams_file ⇒ Object
# === scan_for_exam_entries_in_the_exams_file =========================================================================== #.
Methods inherited from Base
#add_proper_year_entry_to_this_line, #already_solved_this_lva_number?, #append_what_into, #available_topics_as_short_name, #average_grade, #bachelor_master_or_diploma, #base_dir?, #be_silent, #be_verbose?, #beautiful_url, #change_directory, #cheering_person, #cliner, #colour_for_ects_points, #colourize_percentage, #commandline_arguments?, #commandline_arguments_joined, #commandline_arguments_with_hyphens?, #convert_this_array_of_lectures_into_the_full_dataset, #copy, #cpruby, #create_directory, #create_file, #csv_file?, #current_month?, #datum?, #day_month_year, #debug?, #delete_file, #directory_of_the_exam_topics?, #directory_to_my_exam_topics, #directory_to_the_exam_topics?, #disable_colours, #disable_colours_globally, #do_not_be_verbose, #do_not_use_opn, #do_these_curricula_include_both_a_bachelor_and_a_master_curriculum?, #does_this_line_include_a_german_weekday?, #does_this_line_include_a_html_colour?, #e, #ecomment, #editor?, #ee, #enable_colours, #enable_colours_globally, #enable_debug, #encoding?, #english_to_german_weekday, #ensure_main_encoding, #ensure_that_the_log_directory_exists, #eparse, #erev, #esystem, #etomato, #exit_program, #expand_topic, #extract_dd_mm_yyyy, #file_lecture_information?, #file_read_with_proper_encoding, #filter_away_invalid_questions, #find_corresponding_exam_topic, #first_argument?, #first_non_hyphen_argument?, #from_curriculum_id_to_university, #german_date_notation, #german_weekday?, #german_weekdays?, #has_a_bachelor_curriculum?, #has_a_master_curriculum?, #has_this_exam_topic_been_solved?, #has_year_entry?, #hh_mm_ss_dd_mm_yyyy, #horizontal_bar?, #html_log_directory?, #is_a_master_lecture?, #is_a_weekday?, #is_connected_to_the_www?, #is_on_roebe?, #is_prüfungsimmanent?, #is_this_a_valid_html_colour?, #is_this_day_today?, #konsole_support?, #last_file?, #lectures_from_indi1, #lectures_from_indi2, #lectures_from_indi3, #lectures_from_indi4, #lectures_from_the_bachelor_genetik_curriculum, #lectures_from_the_individual_vektor_curricula, #load_yaml_dataset, #move_file, #n_days_difference_from_today_to_this_day, #no_ext_name, #no_file_at, #number_to_month, #obtain, #obtain_lectures_from_this_curriculum, #open_in_editor, #opnn, #path_to_exam_topic?, #read_dataset_from_a_curriculum_file, #read_in_exam_dataset_from_this_file, #read_this_file_with_default_encoding, #readlines_from_this_input_file, #register_sigint, #remove_empty_strings, #remove_escape_sequences, #remove_internal_comments, #remove_leading_comments, #remove_leading_weekday_names_from, #remove_newlines, #remove_tags_from_this_input, #rename_kde_konsole_tab, #rename_konsole_tab?, #replace_all_html_colours_in_this, #replace_bold_token_with_default_colour, #replace_italic_token_with_default_colour, #replace_italic_token_with_this_colour, #replace_regular_numbers_with_unicode_numbers, #replace_underline_token_with_default_colour, #replace_underline_token_with_this_colour, #return_all_bachelor_lectures, #return_all_exams_on_this_day, #return_all_numbers_from, #return_all_registered_curricula, #return_all_steop_lectures, #return_current_year, #return_dataset_for_this_topic, #return_dataset_from_this_curriculum_file, #return_dd_mm_yy_and_time_from, #return_directory_for, #return_ects_points_from_these_lectures, #return_either_grey_or_the_custom_colour_for_answers, #return_either_grey_or_the_custom_colour_for_questions, #return_file_for_this_curriculum, #return_german_name_for_this_english_month, #return_german_weekday_of?, #return_hh_mm_ss_from, #return_hour_from_this, #return_lectures_from_bachelor_vektor_curriculum, #return_lectures_with_at_the_least_one_upcoming_exam, #return_local_path_of_this_pwdstud, #return_lva_number_of_this_lecture, #return_month_fitting_to_this_input, #return_n_days_until_monday, #return_n_days_until_sunday, #return_n_exam_questions_in, #return_n_questions_were_answered_for_this_topic, #return_name_of_the_weekday, #return_name_of_this_curriculum, #return_name_of_this_curriculum_based_on_its_id_number, #return_opnn, #return_passed_courses, #return_pwd, #return_random_curriculum, #return_sanitized_dataset_from_the_file_lecture_information, #return_solved_lectures, #return_steop_lectures, #return_the_remote_homepage_url, #return_this_line_has_n_characters_as_html_colour_tags, #return_title_from_this_curriculum_file, #rev, #right_arrow?, #rinstall2, #roebe_exam_directory?, #ruby_src_dir_at_home?, #runmode?, #sanitize_this_topic, #sanitize_url, #select_lectures_with_this_key, #set_be_quiet, #set_be_verbose, #set_commandline_arguments, #set_commandline_mode, #set_runmode, #set_this_cd_alias_to, #set_www_mode, #sfancy, #shall_we_make_use_of_unicode_symbols?, #show_todays_date, #simp, #sort_these_lecture_names_by_time, #spacer, #swarn, #this_month_has_n_days?, #total_ects_points_passed, #translate_dd_mm_yyyy_to_weekday, #try_to_require_the_rcfiles, #turn_this_array_into_the_full_dataset, #unicode_blocks_line, #use_colours?, #use_opn?, #vertical_bar?, #web_liner, #weekday?, #weekdays?, #word_wrap, #write_what_into, #www_connection_is_unavailable, #www_mode?, #yaml_dir?
Methods included from Colours
#bold_blue, #bold_red, #bold_yellow, #cadetblue, #chartreuse, crimson, #darkgray, darkgreen, darkseagreen, deepskyblue, #deepskyblue, default_colour, #dimgray, disable_colours, #dodgerblue, e, #efancy, enable_colours, #ewarn, #forestgreen, gold, #grey, lightblue, lightgreen, #lightslategray, #lightsteelblue, #mediumorchid, #mediumseagreen, #oldlace, #olivedrab, orange, orangered, #orchid, palevioletred, #papayawhip, rev, royalblue, sdir, #sdir, sfancy, #sfancy, sfile, #sfile, simp, #simp, slateblue, steelblue, #steelblue, #swarn, swarn, #teal, turquoise, use_colours?, use_this_colour_for_exam_answers, use_this_colour_for_exam_questions, #yellow
Constructor Details
#initialize(run_already = true) ⇒ UpcomingExamsDataset
#
initialize
#
56 57 58 59 60 61 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 56 def initialize( run_already = true ) reset run if run_already end |
Instance Method Details
#[](i) ⇒ Object
#
[]
#
168 169 170 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 168 def [](i) @hash_exam_dates[i] end |
#exam_dates? ⇒ Boolean
#
exam_dates?
#
132 133 134 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 132 def exam_dates? @hash_exam_dates end |
#exam_on_this_day?(i = '08.03.2018') ⇒ Boolean
#
exam_on_this_day?
This method will return a Boolean - thus either true or false.
It must return true if there is any (at the least one) exam on the given date - otherwise it will return false.
The recommended format is in the dd.mm.yyyy notation.
#
182 183 184 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 182 def exam_on_this_day?(i = '08.03.2018') @array_containing_exam_dates.include? i end |
#has_key?(this_key) ⇒ Boolean
#
has_key?
#
139 140 141 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 139 def has_key?(this_key) @hash_exam_dates.has_key?(this_key) end |
#load_dataset_from_the_exams_file ⇒ Object
#
load_dataset_from_the_exams_file
Note that this depends on the file
"/home/x/STUDIUM/YAML/exams.yml"
#
86 87 88 89 90 91 92 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 86 def load_dataset_from_the_exams_file if File.exist? FILE_EXAMS @dataset = read_file(FILE_EXAMS) else opnn; e "Can not load from file `#{sfile(FILE_EXAMS)}`." end end |
#purge_this_line(line) ⇒ Object
#
purge_this_line
This will remove the line from the Hash.
#
99 100 101 102 103 104 105 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 99 def purge_this_line(line) if @hash_exam_dates.has_value?(line) @hash_exam_dates.reject! {|key, value| value == line } end end |
#reset ⇒ Object
#
reset
#
66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 66 def reset super() # ========================================================================= # # === @array_containing_exam_dates # ========================================================================= # @array_containing_exam_dates = [] # ========================================================================= # # === @hash_exam_dates # ========================================================================= # @hash_exam_dates = {} end |
#return_date_and_time_of(line) ⇒ Object
#
return_date_and_time_of
This method shall return a String such as:
08.03.2018, 17:00-18:45
#
151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 151 def return_date_and_time_of(line) _ = ''.dup # ========================================================================= # # First, find the dd.mm.yyyy notation. # ========================================================================= # _ << line.scan(REGEX_FOR_DD_MM_YYYY_NOTATION).flatten.first.to_s _ << ', ' # ========================================================================= # # Next, find the exam-time on that particular day. # ========================================================================= # _ << line.scan(REGEX_FOR_THE_EXACT_TIME_ON_THE_EXAM_DAY).flatten.first.to_s _ end |
#return_most_likely_lecture_name_from_this_line(i = '# === (3) 16.03.2018, 300707, Freitag, Molekulare Infektionsbiologie, Ort: Hörsaal C1 UniCampus Hof 2,Spitalgasse 2,1090 Wien,Beginnzeit(zw. 15-18 Uhr) wird am Dienstag davor bekanntgegeben!') ⇒ Object
#
return_most_likely_lecture_name_from_this_line
This method will try to return the most likely name of the lecture at hand.
It will then be able to return a String such as “Molekulare Infektionsbiologie”, which represents the name of the lecture.
#
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 195 def return_most_likely_lecture_name_from_this_line( i = '# === (3) 16.03.2018, 300707, Freitag, Molekulare Infektionsbiologie, Ort: Hörsaal C1 UniCampus Hof 2,Spitalgasse 2,1090 Wien,Beginnzeit(zw. 15-18 Uhr) wird am Dienstag davor bekanntgegeben!' ) most_likely_lecture_name = i.dup.delete('#').sub(/ === /,'') # ========================================================================= # # Chop off entries such as (3) or (11) # ========================================================================= # most_likely_lecture_name.sub!(/\(\d{1,2}\)/,'') most_likely_lecture_name.strip! most_likely_lecture_name.delete!(',') most_likely_lecture_name.squeeze!(' ') if most_likely_lecture_name.include? 'Ort' most_likely_lecture_name = most_likely_lecture_name[0 .. (most_likely_lecture_name.index('Ort') -1)] most_likely_lecture_name.strip! end most_likely_lecture_name = remove_weekname_from(most_likely_lecture_name) # ========================================================================= # # Remove the time on that day next, such as 15:00-18:00. # ========================================================================= # most_likely_lecture_name.sub!(/\d{1,2}:\d{1,2}-\d{1,2}:\d{1,2}/,'') most_likely_lecture_name.squeeze!(' ') # ========================================================================= # # Next, remove date-information. # ========================================================================= # most_likely_lecture_name.sub!(/\d{1,2}\.\d{1,2}.\d{4}/,'') most_likely_lecture_name.squeeze!(' ') most_likely_lecture_name.strip! # ========================================================================= # # Now the input may look like this → "300707 Molekulare Infektionsbiologie" # So we just have to get rid of the numbers and there we go. But some # lectures may include a number as part of their name, so we can not # remove all numbers easily. # ========================================================================= # most_likely_lecture_name.gsub!(/^\d{1,3}\.?\d{1,3}/,'') most_likely_lecture_name.strip! most_likely_lecture_name end |
#run ⇒ Object
#
run
#
236 237 238 239 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 236 def run load_dataset_from_the_exams_file scan_for_exam_entries_in_the_exams_file end |
#scan_for_exam_entries_in_the_exams_file ⇒ Object
#
scan_for_exam_entries_in_the_exams_file
#
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/studium/exams/upcoming_exams_dataset.rb', line 110 def scan_for_exam_entries_in_the_exams_file use_this_regex = /^# === \(\d{1,2}\) .+$/ # See: http://rubular.com/r/UfwBiWDOqg regex_for_inner_date = /\)? (\d{1,2}\.\d{1,2}\.\d{4,4}),/ scanned = @dataset.scan(use_this_regex) # ========================================================================= # # Next, determine on which day we will have exams, into an Array. # ========================================================================= # scanned.each {|line| # ======================================================================= # # The line can be: # "# === (3) 05.03.2018, Strukturbiologie I, 14:00-15:30, Ort: STB/Hörsaal A Campus Vienna Biocenter 5, 1030 Wien" # ======================================================================= # the_date = line.scan(regex_for_inner_date).flatten.first # See: http://rubular.com/r/h40qQ9a3Nv @hash_exam_dates[the_date] = line @array_containing_exam_dates << the_date @array_containing_exam_dates.uniq! } end |