Class: Studium::MandatoryLecturesInThisMonth

Inherits:
Base
  • Object
show all
Defined in:
lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb

Overview

Studium::MandatoryLecturesInThisMonth

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect
AVAILABLE_MONTHS =
#

AVAILABLE_MONTHS

#
Date::MONTHNAMES

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

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

#

initialize

#


36
37
38
39
40
41
42
43
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 36

def initialize(
    i           = nil,
    run_already = true
  )
  reset
  set_show_mandatory_courses_in_this_month(i)
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Studium::MandatoryLecturesInThisMonth[]

#


301
302
303
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 301

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

Instance Method Details

#check_against_this_year?Boolean Also known as: check_for_which_year?, searching_for_which_year?

#

check_against_this_year?

#

Returns:

  • (Boolean)


249
250
251
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 249

def check_against_this_year?
  @check_against_this_year
end

#determine_which_courses_are_run_in_this_monthObject

#

determine_which_courses_are_run_in_this_month

#


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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 128

def determine_which_courses_are_run_in_this_month
  searching_for_this_month = searching_for_which_month?
  searching_for_this_year  = searching_for_which_year?
  _ = @dataset
  # ======================================================================= #
  # We must determine next which entries are in the month at hand.
  # ======================================================================= #
  _.select! {|name_of_the_lecture, inner_dataset|
    lva_dates = inner_dataset['lva_dates']
    if lva_dates
      only_the_month = lva_dates.map {|entry|
        entry = remove_weeknames(entry).strip
        # ================================================================= #
        # Invalidate entries that do not use the target year.
        # ================================================================= #
        unless entry.include? searching_for_this_year.to_s
          entry = nil
        end
        if entry
          if entry.include? ','
            entry = entry.split(',').first
          end
          if entry.include? '.'
            entry = entry.split('.')[1].to_i # This selects the month-entry. 
          end
        end
        entry
      }
      only_the_month.compact!
      only_the_month.include? searching_for_this_month
    else
      e swarn('No lva entry for `')+
        slateblue(name_of_the_lecture)+
        swarn('`.')
    end
  }
  # ======================================================================= #
  # Sort by priority first.
  # ======================================================================= #
  _ = _.sort_by {|a, b| priority = b[:priority]
    priority # Sort by priority first.
  }
  @dataset = _
  e
  e "The following lectures are in the month #{orange(which_month?.to_s)}:"
  e
  report(@dataset)
end

#report(i = @dataset) ⇒ Object

#

report (report tag)

This is the general reporting-method of this class. Arrays and Hashes may be treated somewhat differently.

#


183
184
185
186
187
188
189
190
191
192
193
194
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
232
233
234
235
236
237
238
239
240
241
242
243
244
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 183

def report(
    i = @dataset
  )
  result = ''.dup
  if i.is_a? Hash
    i.each_pair {|a, b|
      result << "  #{powderblue(a)}#{N}"
    }
  elsif i.is_a? Array
    counter = 0
    i.each {|name_of_the_lecture, b| counter += 1
      result << '  '+
                royalblue((counter.to_s+')').ljust(4))+
                powderblue(name_of_the_lecture)
      lva_dates    = b['lva_dates']
      lecture_type = obtain(:type, b)
      if lva_dates.is_a? Array
        lva_dates.map! {|inner_line|
          inner_line.strip.delete(',')
        }
      end
      if b.is_a?(Hash) and b.has_key?(:priority)
        # ================================================================= #
        # In this case append the priority. And the amount of ECTS too.
        # ================================================================= #
        result << +seagreen(
          ' (Priority: '+b[:priority].to_s
        )
        if b.has_key?(:ects)
          result << seagreen('; ')
          result << mediumorchid(b[:ects].to_s+' ECTS')
        end
        result << "; Type: #{lecture_type}"
        result << seagreen(')')
      end
      result << N
      this_month = @show_mandatory_courses_in_this_month
      unless lva_dates.empty?
        result << N # A prettier newline before we will display the rest.
      end
      # =================================================================== #
      # Next, also show the lectures in this month.
      # =================================================================== #
      lva_dates.each {|lva_date|
        # ================================================================= #
        # Only add it if it is the proper month.
        # ================================================================= #
        splitted = lva_date.split('.')
        month = splitted[1].to_i
        if month == this_month
          weekday = return_weekday_from_this_input(lva_date, :use_german).ljust(10)
          result << skyblue('    ')+
                    mediumseagreen(weekday)+
                    skyblue(' '+lva_date+N)
        end
      }
      result << N # A prettier newline before we will display the rest.
    }
  end
  result << N
  e result
end

#resetObject

#

reset (reset tag)

#


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 48

def reset
  super()
  # ======================================================================= #
  # === @namespace
  # ======================================================================= #
  @namespace = NAMESPACE
  # ======================================================================= #
  # === @check_against_this_year
  #
  # The following variable is important so that we know whether
  # we shall check against the current year, or the next year.
  # This depends on the input passed to the method
  # set_show_mandatory_courses_in_this_month() ultimately.
  # ======================================================================= #
  @check_against_this_year = Time.now.year
  if ::Studium.main_dataset?
    @dataset = ::Studium.main_dataset?
  else
    @dataset = return_dataset_from_file_lecture_information
  end
end

#runObject

#

run (run tag)

#


289
290
291
292
293
294
295
296
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 289

def run
  show_introduction_header
  # ======================================================================= #
  # First, we will select mandatory-presence courses.
  # ======================================================================= #
  select_only_unfinished_mandatory_presence_courses_with_a_lva_dates_entry
  determine_which_courses_are_run_in_this_month
end

#select_only_unfinished_mandatory_presence_courses_with_a_lva_dates_entryObject

#

select_only_unfinished_mandatory_presence_courses_with_a_lva_dates_entry

We will select only the following courses:

(1) Those that are "prüfungsimmanent", aka require "mandatory presence"
(2) Those that have NOT yet been solved
(3) Those that DO have a lva_dates entry.
#


264
265
266
267
268
269
270
271
272
273
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 264

def select_only_unfinished_mandatory_presence_courses_with_a_lva_dates_entry
  @dataset.select! {|a, inner_dataset|
    lecture_type = inner_dataset[:type]
    already_solved = inner_dataset[:already_solved]
    has_lva_dates_entry = inner_dataset.has_key?('lva_dates')
    is_prüfungsimmanent?(lecture_type) and
    (!already_solved) and
    has_lva_dates_entry
  }
end

#set_show_mandatory_courses_in_this_month(i = return_current_month_as_a_number) ⇒ Object

#

set_show_mandatory_courses_in_this_month

This method determines on which month we will work.

Note that we will store the month as a number.

#


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
102
103
104
105
106
107
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 77

def set_show_mandatory_courses_in_this_month(
    i = return_current_month_as_a_number
  )
  if i.is_a? Array # We want a String past this point here.
    if i.empty?
      i << return_current_month_as_a_number
    end
    i = i.join(' ').strip
  end
  i = i.to_s # First a String, to check for month-names.
  if MONTH_NAME_ALIASES_GERMAN_TO_ENGLISH.has_key? i.capitalize
    i = MONTH_NAME_ALIASES_GERMAN_TO_ENGLISH[i.capitalize]
  end
  if MONTH_NAME_TO_MONTH_NUMBER.has_key? i.capitalize
    # ===================================================================== #
    # If the key is found in that number, we will use its value.
    # ===================================================================== #
    i = MONTH_NAME_TO_MONTH_NUMBER[i.capitalize]
  end
  i = i.to_i
  @show_mandatory_courses_in_this_month = i
  # ======================================================================= #
  # Whenever the month has been assigned, we also need to consider
  # updating the variable called @check_against_this_year.
  # The logic for this is simple - if the number is below the current
  # month, then we will add +1 to @check_against_this_year. 
  # ======================================================================= #
  if i < Time.now.month
    @check_against_this_year += 1
  end
end

#show_introduction_headerObject

#

show_introduction_header

#


278
279
280
281
282
283
284
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 278

def show_introduction_header
  opnn { :no_colon }
  e
  e
  e "All lectures that offer a date on the month #{teal(which_month?.to_s)}"\
    " will be shown next."
end

#show_mandatory_courses_in_this_month?Boolean Also known as: searching_for_which_month?

#

show_mandatory_courses_in_this_month?

#

Returns:

  • (Boolean)


112
113
114
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 112

def show_mandatory_courses_in_this_month?
  @show_mandatory_courses_in_this_month
end

#which_month?Boolean

#

which_month?

This method must return the name of a month.

#

Returns:

  • (Boolean)


121
122
123
# File 'lib/studium/utility_scripts/mandatory_lectures_in_this_month.rb', line 121

def which_month?
  AVAILABLE_MONTHS[@show_mandatory_courses_in_this_month]
end