Class: Studium::ExamsThisWeek

Inherits:
Base
  • Object
show all
Defined in:
lib/studium/exams/exams_this_week.rb

Overview

Studium::ExamsThisWeek

Constant Summary

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::NAMESPACE, Base::N_CHARACTERS_PER_LINE, Base::UNICODE_RIGHT_ARROW

Constants included from Colours

Colours::COLOURS

Class Method Summary collapse

Instance Method Summary collapse

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, #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(commandline_arguments = nil, run_already = true) ⇒ ExamsThisWeek

#

initialize

#


23
24
25
26
27
28
29
30
31
32
# File 'lib/studium/exams/exams_this_week.rb', line 23

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::ExamsThisWeek[]

#


172
173
174
# File 'lib/studium/exams/exams_this_week.rb', line 172

def self.[](i = '')
  new(i)
end

Instance Method Details

#clinerObject

#

cliner

#


158
159
160
# File 'lib/studium/exams/exams_this_week.rb', line 158

def cliner
  e saddlebrown(@horizontal_bar * 90)
end

#display_all_exams_in_this_weekObject

#

display_all_exams_in_this_week

This is the main method that will show all exams in this week.

#


77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/studium/exams/exams_this_week.rb', line 77

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.

#


108
109
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
# File 'lib/studium/exams/exams_this_week.rb', line 108

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

#resetObject

#

reset (reset tag)

#


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/studium/exams/exams_this_week.rb', line 37

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 = horizontal_bar?
  sanitize_the_main_dataset
end

#runObject

#

run (run tag)

#


165
166
167
# File 'lib/studium/exams/exams_this_week.rb', line 165

def run
  display_all_exams_in_this_week
end

#sanitize_the_main_datasetObject

#

sanitize_the_main_dataset

This method will sanitize the main dataset.

#


63
64
65
66
67
68
69
70
# File 'lib/studium/exams/exams_this_week.rb', line 63

def sanitize_the_main_dataset
  # ======================================================================= #
  # First, we select only entries that have an exam entry.
  # ======================================================================= #
  @dataset.select! {|a,b|
    b.has_key?('exams')
  }
end