Class: Studium::ResolvePracticalCoursesDateConflicts
- Inherits:
-
Base
- Object
- Base
- Studium::ResolvePracticalCoursesDateConflicts
show all
- Defined in:
- lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb
Overview
Studium::ResolvePracticalCoursesDateConflicts
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
Colours::COLOURS
Class Method Summary
collapse
-
.[](i = '') ⇒ Object
# === [] ========================================================================= #.
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, #be_silent, #be_verbose?, #beautiful_url, #change_directory, #cheering_person, #chmod, #cliner, #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?, #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
#commandline?, #runmode?, #set_commandline_mode, #set_runmode, #set_www_mode, #www_mode?
#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
#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
32
33
34
35
36
37
38
39
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 32
def initialize(
i = nil,
run_already = true
)
reset
set_input(i)
run if run_already
end
|
Class Method Details
.[](i = '') ⇒ Object
181
182
183
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 181
def self.[](i = '')
new(i)
end
|
Instance Method Details
#add_all_termine_onto_the_hash_that_keeps_the_lecture_dates ⇒ Object
#
add_all_termine_onto_the_hash_that_keeps_the_lecture_dates
#
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 243
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 @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
#
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/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 204
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?
76
77
78
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 76
def dataset?
@dataset
end
|
#hash_keeping_all_lectures? ⇒ Boolean
Also known as:
main_hash?
#
hash_keeping_all_lectures?
#
146
147
148
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 146
def hash_keeping_all_lectures?
@hash_keeping_all_lectures
end
|
69
70
71
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 69
def input?
@input
end
|
#load_main_yaml_dataset ⇒ Object
#
load_main_yaml_dataset
#
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 124
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?
#
107
108
109
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 107
def report_where_to_load_from?
false
end
|
#reset ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 44
def reset
super()
infer_the_namespace
@array_all_unique_time_dates = []
@hash_keeping_all_lectures = {}
@hash_keeping_the_termine = {}
end
|
#return_priority(number) ⇒ Object
236
237
238
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 236
def return_priority(number)
' (Priority: '+orange(number.to_s.rjust(3))+')'
end
|
#return_termine_from(i) ⇒ Object
114
115
116
117
118
119
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 114
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
|
#run ⇒ Object
188
189
190
191
192
193
194
195
196
197
198
199
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 188
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_dataset ⇒ Object
#
sanitize_time_entries_in_the_dataset
This method will only sanitize the time entries.
#
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 85
def sanitize_time_entries_in_the_dataset
new_hash = {}
_ = main_dataset?
_.each_pair {|key, hash_value|
new_value = turn_input_into_real_dates(hash_value['termine'])
@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
|
60
61
62
63
64
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 60
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.
#
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
# File 'lib/studium/utility_scripts/resolve_practical_courses_date_conflicts/resolve_practical_courses_date_conflicts.rb', line 156
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
|