Class: Studium::Exams::ThisWeek
- Defined in:
- lib/studium/exams/exams_this_week.rb
Overview
Studium::ExamsThisWeek
Constant Summary
Constants inherited from Base
Base::COMMON_YEAR_DAYS_IN_MONTH, Base::LEFT_PADDING, Base::NAMESPACE, Base::N_CHARACTERS_PER_LINE
Constants included from Colours
Class Method Summary collapse
-
.[](i = '') ⇒ Object
# === Studium::Exams::ThisWeek[] ========================================================================= #.
Instance Method Summary collapse
-
#cliner ⇒ Object
# === cliner ========================================================================= #.
-
#display_all_exams_in_this_week ⇒ Object
# === display_all_exams_in_this_week.
-
#initialize(commandline_arguments = nil, run_already = true) ⇒ ThisWeek
constructor
# === initialize ========================================================================= #.
-
#report(i) ⇒ Object
# === report.
-
#reset ⇒ Object
# === reset (reset tag) ========================================================================= #.
-
#run ⇒ Object
# === run (run tag) ========================================================================= #.
-
#sanitize_the_main_dataset ⇒ Object
# === sanitize_the_main_dataset.
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, #be_silent, #be_verbose?, #beautiful_url, #change_directory, #cheering_person, #chmod, #colour_for_ects_points, #colourize_percentage, #convert_this_array_of_lectures_into_the_full_dataset, #copy, #course_filter, #cpruby, #create_directory, #create_file, #csv_file?, #current_month?, #current_semester?, #dataset?, #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?, #does_this_line_include_an_english_weekday?, #does_this_line_start_with_a_german_weekday?, #e, #ecomment, #editor?, #ee, #egrey, #enable_colours, #enable_colours_globally, #enable_debug, #encoding?, #english_to_german_weekday, #ensure_that_a_base_directory_exists_for_this_file, #ensure_that_the_log_directory_exists, #eparse, #esystem, #etomato, #exit_program, #extract_dd_mm_yyyy, #fetch_this_curriculum, #file_important_exams?, #file_lecture_information?, #file_passed_exams_per_month, #file_read_with_proper_encoding, #filter_away_already_answered_questions, #filter_away_invalid_questions, #filter_for_all_passed_exams, #find_corresponding_exam_topic, #from_curriculum_id_to_university, #german_date_notation, #german_weekday?, #german_weekdays?, #german_weekend_for?, #german_yes_or_no, #has_a_bachelor_and_a_master_curriculum?, #has_a_bachelor_curriculum?, #has_a_master_curriculum?, #has_lva_dates_registered?, #has_this_exam_topic_been_solved?, #has_year_entry?, #hh_mm_ss_dd_mm_yyyy, #horizontal_bar?, #html_log_directory?, #infer_the_namespace, #initialize_the_internal_hash, #internal_hash?, #is_a_master_lecture?, #is_a_registered_curriculum?, #is_a_weekday?, #is_connected_to_the_www?, #is_german_weekday?, #is_on_roebe?, #is_prüfungsimmanent?, #is_this_a_registered_exam_topic?, #is_this_a_valid_html_colour?, #is_this_day_today?, #is_this_lecture_a_practical_course?, #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, #left_arrow?, #load_yaml_dataset, #map_input_to_this_curriculum_filename, #move_file, #n_days_difference_from_today_to_this_day, #n_seconds_to_n_days, #namespace?, #no_ext_name, #no_file_exists_at, #number_to_month, #obtain, #obtain_lectures_from_this_curriculum, #open_in_browser, #open_in_editor, #opne, #opnerev, #opnn, #padded_current_month?, #parse_dd_mm_yyyy, #parse_this_line_for_date_entry, #path_to_exam_topic?, #project_yaml_directory?, #rds, #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, #require_open_uri, #reset_the_internal_state, #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, #right_arrow?, #rinstall2, #roebe_exam_directory?, #roebe_path_to_file_lecture_information?, #ruby_src_dir_at_home?, #sanitize_this_topic, #sanitize_url, #select_for_prüfungsimmanente_LVs, #select_lectures_with_this_key, #set_be_verbose, #set_this_cd_alias_to, #set_xorg_buffer, #sfancy, #shall_we_make_use_of_unicode_symbols?, #show_todays_date, #silently_open_in_browser, #simp, #sort_these_lecture_names_by_time, #spacer, #studium_log_dir?, #this_month_has_n_days?, #total_ects_points_passed, #translate_dd_mm_yyyy_to_weekday, #try_to_require_html_templates, #try_to_require_the_open_gem, #try_to_require_the_rcfiles, #try_to_require_the_verbose_truth_gem, #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, #yaml_dir?, #yellowrev, #yes_or_no
Methods included from RunmodeModule
#commandline?, #runmode?, #set_commandline_mode, #set_runmode, #set_www_mode, #www_mode?
Methods included from CommandlineArgumentsModule
#commandline_arguments?, #commandline_arguments_joined, #commandline_arguments_with_hyphens?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_non_hyphen_argument?, #reset_the_commandline_arguments, #set_commandline_arguments, #set_first_argument
Methods included from HtmlColoursModule
#aquamarine, #blanchedalmond, #brown, #cadetblue, #chocolate, #coral, #cornflowerblue, #crimson, #cyan, #darkblue, #darkcyan, #darkgoldenrod, #darkgreen, #darkkhaki, #darkolivegreen, #darkorange, #darkred, #darkseagreen, #darkslateblue, #darkslategray, #darkturquoise, #deepskyblue, #firebrick, #forestgreen, #gold, #goldenrod, #green, #grey, #indianred, #khaki, #lavender, #lawngreen, #lightblue, #lightcoral, #lightgreen, #lightred, #lightseagreen, #lightskyblue, #lightslategray, #lightslategrey, #lime, #limegreen, #mediumaquamarine, #mediumblue, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mediumvioletred, #mintcream, #moccasin, #oldlace, #olive, #olivedrab, #orange, #orangered, #orchid, #palegoldenrod, #palegreen, #paleturquoise, #palevioletred, #peru, #plum, #powderblue, #red, #rosybrown, #royalblue, #saddlebrown, #salmon, #sandybrown, #seagreen, #sienna, #silver, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #tan, #teal, #thistle, #tomato, #turquoise, #violet, #whitesmoke, #yellow, #yellowgreen
Methods included from Colours
#bold_blue, #bold_red, #bold_yellow, cadetblue, #cadetblue, #chartreuse, #coral, coral, #cornflowerblue, cornflowerblue, crimson, #cyan, cyan, darkgoldenrod, #darkgoldenrod, #darkgray, darkgreen, darkolivegreen, darkseagreen, #darkslateblue, darkslateblue, #darkslategray, darkslategray, #darkturquoise, darkturquoise, #deepskyblue, deepskyblue, default_colour, #dimgray, disable_colours, #dodgerblue, e, #efancy, enable_colours, #erev, #ewarn, #forestgreen, forestgreen, gold, #goldenrod, goldenrod, #grey, grey, indianred, #indianred, khaki, #khaki, lawngreen, #lawngreen, lightblue, lightgreen, lightsalmon, #lightseagreen, lightseagreen, lightskyblue, #lightskyblue, #lightslategray, lightslategray, #lightsteelblue, lime, #lime, limegreen, #limegreen, #mediumaquamarine, mediumaquamarine, #mediumorchid, #mediumpurple, mediumpurple, #mediumseagreen, mediumseagreen, #mediumslateblue, mediumslateblue, #mediumspringgreen, mediumspringgreen, #mediumturquoise, mediumturquoise, #oldlace, olive, #olive, olivedrab, #olivedrab, orange, orangered, #orchid, orchid, palegreen, #palegreen, paleturquoise, #paleturquoise, palevioletred, #papayawhip, peru, #peru, plum, #plum, #powderblue, powderblue, rev, #rev?, royalblue, saddlebrown, #saddlebrown, #sandybrown, sandybrown, sdir, #sdir, seagreen, #seagreen, sfancy, #sfancy, sfile, #sfile, #simp, simp, #skyblue, skyblue, slateblue, #slategray, slategray, springgreen, #springgreen, #steelblue, steelblue, #swarn, swarn, #tan, tan, teal, #teal, #tomato, tomato, turquoise, use_colours?, use_this_colour_for_exam_answers, use_this_colour_for_exam_questions, #yellow, yellowgreen, #yellowgreen
Constructor Details
#initialize(commandline_arguments = nil, run_already = true) ⇒ ThisWeek
#
initialize
#
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/studium/exams/exams_this_week.rb', line 25 def initialize( commandline_arguments = nil, run_already = true ) reset set_commandline_arguments( commandline_arguments ) run if run_already end |
Class Method Details
.[](i = '') ⇒ Object
#
Studium::Exams::ThisWeek[]
#
174 175 176 |
# File 'lib/studium/exams/exams_this_week.rb', line 174 def self.[](i = '') new(i) end |
Instance Method Details
#cliner ⇒ Object
#
cliner
#
160 161 162 |
# File 'lib/studium/exams/exams_this_week.rb', line 160 def cliner e saddlebrown(@horizontal_bar * 90) end |
#display_all_exams_in_this_week ⇒ Object
#
display_all_exams_in_this_week
This is the main method that will show all exams in this week.
#
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/studium/exams/exams_this_week.rb', line 79 def display_all_exams_in_this_week # ======================================================================= # # First we must build a time range. The time range typically begins # today, and ends at the next Sunday. The start time can be chosen, # though, by setting the variable @starting_time_to_use. # ======================================================================= # n_days = return_n_days_until_sunday(@starting_time_to_use) time_until_sunday = (Date.today + n_days) hash = {} # Collect the results here. @dataset.each {|a, b| exams = b['exams'] if exams.any? {|entry| parsed_time = Time.parse(entry) (parsed_time < time_until_sunday.to_time) and (parsed_time > @starting_time_to_use) } hash[a] = b end } if hash and !hash.empty? report(hash) else e 'No exam is registered for the current week.' end end |
#report(i) ⇒ Object
#
report
The input to this method should be our Hash.
#
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/studium/exams/exams_this_week.rb', line 110 def report(i) # ======================================================================= # # We must sort these based on the time-stamp of the first exam. # ======================================================================= # sorted = i.sort_by {|a, b| exams = b['exams'] first_exam = exams.first Time.parse(first_exam) } e "#{rev}The following #{lightgreen(sorted.size)} "\ "exams will happen in #{royalblue('this week')}:" e index = 0 cliner sorted.each {|name_of_the_course, b| index += 1 exams = b['exams'] remote_url = obtain_from(:remote_url, b) # Obtain the remote url here. remote_url = remote_url.first if remote_url.is_a? Array first_exam = exams.first first_exam_time_parsed = Time.parse(first_exam) # ===================================================================== # # Get the time of the exam: # ===================================================================== # time_of_the_exam = return_hour_from_this(first_exam) english_weekday = translate_dd_mm_yyyy_to_weekday(first_exam.to_s) german_weekday = english_to_german_weekday(english_weekday) german_dd_mm_yyyy_format = german_formatting_for_the_date(first_exam_time_parsed) # ===================================================================== # # First display the index, to the left side. # ===================================================================== # e " #{lightgreen(index)}) #{steelblue(name_of_the_course).ljust(90)} "+\ mediumpurple("[#{english_weekday}]") e " → #{springgreen(remote_url)}" result = royalblue(' The exam will be at:')+ darkkhaki(" #{german_weekday} "\ "#{german_dd_mm_yyyy_format}" )+crimson(' [Uhrzeit: '+time_of_the_exam.to_s+']') if is_this_day_today?(german_dd_mm_yyyy_format) result << lightsteelblue(' ← ist heute \o/') end e result e cliner } e end |
#reset ⇒ Object
#
reset (reset tag)
#
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/studium/exams/exams_this_week.rb', line 39 def reset super() # ======================================================================= # # === @dataset # ======================================================================= # @dataset = return_dataset_from_file_lecture_information # ======================================================================= # # === @starting_time_to_use # # This variable determines which week to show. # ======================================================================= # @starting_time_to_use = Time.now # ======================================================================= # # === @horizontal_bar # # This is just for a horizontal bar, a unicode character. # ======================================================================= # @horizontal_bar = sanitize_the_main_dataset end |
#run ⇒ Object
#
run (run tag)
#
167 168 169 |
# File 'lib/studium/exams/exams_this_week.rb', line 167 def run display_all_exams_in_this_week end |
#sanitize_the_main_dataset ⇒ Object
#
sanitize_the_main_dataset
This method will sanitize the main dataset.
#
65 66 67 68 69 70 71 72 |
# File 'lib/studium/exams/exams_this_week.rb', line 65 def sanitize_the_main_dataset # ======================================================================= # # First, we select only entries that have an exam entry. # ======================================================================= # @dataset.select! {|a,b| b.has_key?('exams') } end |