Class: Studium::ResolvePracticalCoursesDateConflicts

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

Overview

Studium::ResolvePracticalCoursesDateConflicts

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect

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) ⇒ ResolvePracticalCoursesDateConflicts

#

initialize

#


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

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

Class Method Details

.[](i = '') ⇒ Object

#

[]

#


189
190
191
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 189

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

Instance Method Details

#add_all_termine_onto_the_hash_that_keeps_the_lecture_datesObject

#

add_all_termine_onto_the_hash_that_keeps_the_lecture_dates

#


251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 251

def add_all_termine_onto_the_hash_that_keeps_the_lecture_dates
  @hash_keeping_all_lectures.each_pair {|name_of_the_lecture, hash_datastructure|
    termine  = hash_datastructure.termine?
    priority = hash_datastructure.priority?
    termine.each {|this_termin_as_range|
      if @hash_keeping_all_lectures.has_key? this_termin_as_range
e 'DER KEY IST SCHON REGISTERED'
      else # else add it ont the hash
        @hash_keeping_the_termine[this_termin_as_range] = [name_of_the_lecture, priority]
      end
    }
  }
cliner
pp @hash_keeping_the_termine
cliner
end

#compare_these_two_course_exams(first, second) ⇒ Object

#

compare_these_two_course_exams

#


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
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 212

def compare_these_two_course_exams(first, second)
  these_conflicts = []
  if first.has_conflict_with?(second.termine?)
    these_conflicts = first.has_these_conflicts_with?(second.termine?)
    opnn; e these_conflicts.size.to_s+' conflict(s) were found.'
    show_this_array(these_conflicts, :lightblue)
  end
  array_available_dates = (first.termine? + second.termine?).uniq.sort_by {|entry|
    entry.begin
  }
  e 'From the available dates, these are the course dates '\
    'that may be possible:'
  n_rjust = 60
  array_available_dates.each {|entry|
    counter = 0
    e lightgreen(to_german_date(entry))
    if first.allowed_range?(entry)
      counter += 1
      e ' - '+darkolivegreen(counter.to_s+')')+
        springgreen(first.name?.rjust(n_rjust))+return_priority(first.priority?)
    end
    if second.allowed_range?(entry)
      counter += 1
      e ' - '+darkolivegreen(counter.to_s+')')+
        springgreen(second.name?.rjust(n_rjust))+return_priority(second.priority?)
    end
  }
end

#dataset?Boolean Also known as: main_dataset?

#

dataset?

#

Returns:

  • (Boolean)


84
85
86
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 84

def dataset?
  @dataset
end

#hash_keeping_all_lectures?Boolean Also known as: main_hash?

#

hash_keeping_all_lectures?

#

Returns:

  • (Boolean)


154
155
156
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 154

def hash_keeping_all_lectures?
  @hash_keeping_all_lectures
end

#input?Boolean

#

input?

#

Returns:

  • (Boolean)


77
78
79
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 77

def input?
  @input
end

#load_main_yaml_datasetObject

#

load_main_yaml_dataset

#


132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 132

def load_main_yaml_dataset
  _ = FILE_UPCOMING_PRACTICAL_COURSES
  if File.exist? _
    if report_where_to_load_from?
      opnn; e 'Loading the yaml dataset from '
      opnn; e  '  `'+sfile(_)+'` next.'
    end
    @dataset = YAML.load_file(_)
    @dataset.each {|name_of_the_lecture, hash_dataset|
      name_of_the_lecture = use_correct_encoding(name_of_the_lecture)
      @hash_keeping_all_lectures[name_of_the_lecture] =
        Studium::IndividualResolvePracticalCoursesDateConflicts.new(name_of_the_lecture, hash_dataset)
    }
  else
    opnn; e 'No file exists at `'+sfile(_)+'`.'
    exit
  end
end

#report_where_to_load_from?Boolean

#

report_where_to_load_from?

#

Returns:

  • (Boolean)


115
116
117
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 115

def report_where_to_load_from?
  false
end

#resetObject

#

reset (reset tag)

#


49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 49

def reset
  super()
  # ======================================================================= #
  # === @namespace
  # ======================================================================= #
  @namespace = NAMESPACE
  # ======================================================================= #
  # === @array_all_unique_time_dates
  #
  # The next variable keeps track of all unique time dates.
  # ======================================================================= #
  @array_all_unique_time_dates = []
  @hash_keeping_all_lectures = {}
  @hash_keeping_the_termine = {}
end

#return_priority(number) ⇒ Object

#

return_priority

#


244
245
246
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 244

def return_priority(number)
  ' (Priority: '+orange(number.to_s.rjust(3))+')'
end

#return_termine_from(i) ⇒ Object

#

return_termine_from

#


122
123
124
125
126
127
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 122

def return_termine_from(i)
  if i.is_a? Array and (i.size > 1)
    termine = i[1]['termine']
    return array_map_to_time(termine)
  end
end

#runObject

#

run (run tag)

#


196
197
198
199
200
201
202
203
204
205
206
207
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 196

def run
  load_main_yaml_dataset
  main_hash = main_hash?
  keys      = main_hash.keys
  first     = main_hash[keys.first]
  second    = main_hash[keys[1]]
  third     = main_hash[keys[2]]
  compare_these_two_course_exams(first, second)
  compare_these_two_course_exams(first, third)
  compare_these_two_course_exams(second, third)
  add_all_termine_onto_the_hash_that_keeps_the_lecture_dates
end

#sanitize_time_entries_in_the_datasetObject

#

sanitize_time_entries_in_the_dataset

This method will only sanitize the time entries.

#


93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 93

def sanitize_time_entries_in_the_dataset
  new_hash = {}
  _ = main_dataset?
  _.each_pair {|key, hash_value|
    # ===================================================================== #
    # hash_value has to be sanitized.
    # ===================================================================== #
    new_value = turn_input_into_real_dates(hash_value['termine'])
    # ===================================================================== #
    # Also append onto @array_all_unique_time_dates.
    # ===================================================================== #
    @array_all_unique_time_dates << new_value.uniq
    @array_all_unique_time_dates.flatten!
    @array_all_unique_time_dates.uniq!
    hash_value['termine'] = new_value
    new_hash[key] = hash_value
  }
end

#set_input(i = '') ⇒ Object

#

set_input

#


68
69
70
71
72
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 68

def set_input(i = '')
  i = i.first if i.is_a? Array
  i = i.to_s.dup
  @input = i
end

#show_this_array(i, colour_to_use = nil) ⇒ Object

#

show_this_array

This will also convert range objects into time objects into german notation by default.

#


164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 164

def show_this_array(i, colour_to_use = nil)
  i.uniq!
  padding = ''
  if block_given?
    yielded = yield
    if yielded.is_a? Hash
      if yielded.has_key? :padding
        padding = ' ' * yielded.delete(:padding)
      end
    end
  end
  if colour_to_use
    i.each {|entry|
      e self.send(colour_to_use, padding+german_notation(entry).to_s)
    }
  else
    i.each {|entry|
      e padding+german_notation(entry).to_s
    }
  end
end