Class: Studium::Semesterplaner
- Inherits:
-
Base
- Object
- Base
- Studium::Semesterplaner
show all
- Defined in:
- lib/studium/utility_scripts/semesterplaner/semesterplaner.rb
Overview
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 = ARGV) ⇒ Object
# === Studium::Semesterplaner[] ========================================================================= #.
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?, #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
#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
#initialize(commandline_arguments = nil, run_already = true) ⇒ Semesterplaner
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 27
def initialize(
commandline_arguments = nil,
run_already = true
)
reset
set_commandline_arguments(
commandline_arguments
)
run if run_already
end
|
Class Method Details
.[](i = ARGV) ⇒ Object
#
Studium::Semesterplaner[]
#
303
304
305
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 303
def self.[](i = ARGV)
new(i)
end
|
Instance Method Details
#colourize_ects_points(i) ⇒ Object
#
colourize_ects_points
#
106
107
108
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 106
def colourize_ects_points(i)
lightgreen(i)
end
|
#fill_the_hash_with_subsections ⇒ Object
#
fill_the_hash_with_subsections
#
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 234
def fill_the_hash_with_subsections
@all_lectures_from_the_curriculum.each {|this_lecture|
n_ects = pointer?(this_lecture)[:ects].to_f
use_this_semester = which_semester?
if (n_ects_in_this_semester?(use_this_semester) + n_ects) > 30
use_this_semester = @this_semester = increment(@this_semester)
end
if (n_ects_in_this_semester?(previous_semester?) < 30) and
!(use_this_semester == :first_semester) and
(
(n_ects_in_this_semester?(previous_semester?) + n_ects) <= 30
)
use_this_semester = previous_semester?(use_this_semester)
end
@hash_storing_the_subsections[use_this_semester].update(
{ this_lecture => n_ects}
)
}
report
end
|
#increment_semester_counter(i = @this_semester) ⇒ Object
Also known as:
increment
#
increment_semester_counter
#
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 162
def increment_semester_counter(
i = @this_semester
)
case i
when :first_semester
:second_semester
when :second_semester
:third_semester
when :third_semester
:fourth_semester
when :fourth_semester
:fifth_semester
when :fifth_semester
:sixth_semester
when :sixth_semester :sixth_semester
end
end
|
#n_ects_in_this_semester?(i = which_semester?
) ⇒ Boolean
Also known as:
sum_of_ects_points_in
#
n_ects_in_this_semester?
#
151
152
153
154
155
156
157
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 151
def n_ects_in_this_semester?(
i = which_semester?
)
@hash_storing_the_subsections[i].map {|lecture, n_ects|
n_ects
}.sum
end
|
#pointer?(this_lecture) ⇒ Boolean
92
93
94
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 92
def pointer?(this_lecture)
@dataset_from_the_file_lecture_information[this_lecture]
end
|
#previous_semester?(i = @this_semester) ⇒ Boolean
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 184
def previous_semester?(
i = @this_semester
)
case i
when :first_semester
:first_semester
when :second_semester
:first_semester
when :third_semester
:second_semester
when :fourth_semester
:third_semester
when :fifth_semester
:fourth_semester
when :sixth_semester
:fifth_semester
end
end
|
#report ⇒ Object
262
263
264
265
266
267
268
269
270
271
272
273
274
275
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 262
def report
total_n_ects_points = 0
@hash_storing_the_subsections.each_pair {|this_semester, inner_hash|
n_ects_in_this_semester = inner_hash.map {|a,b| b }.sum
e orange(return_long_semester_name(this_semester))+' '+
colourize_ects_points("#{n_ects_in_this_semester} ECTS points")
inner_hash.each_pair {|a, n_ects|
total_n_ects_points += n_ects
e ' '+royalblue(a.ljust(90))+
' '+colourize_ects_points(n_ects.to_s+' ECTS')
}
}
e colourize_ects_points("#{total_n_ects_points} ECTS")
end
|
#reset ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 41
def reset
super()
@dataset_from_the_file_lecture_information = dataset_from_the_file_lecture_information
@all_lectures_from_the_curriculum = return_lectures_from_bachelor_vektor_curriculum
@steop_lectures = []
@hash_storing_the_subsections = {}
@hash_storing_the_subsections[:first_semester] = {}
@hash_storing_the_subsections[:second_semester] = {}
@hash_storing_the_subsections[:third_semester] = {}
@hash_storing_the_subsections[:fourth_semester] = {}
@hash_storing_the_subsections[:fifth_semester] = {}
@hash_storing_the_subsections[:sixth_semester] = {}
@this_semester = :first_semester
end
|
#return_array_of_semesters_where_this_amount_of_ects_points_would_fit(i) ⇒ Object
#
return_array_of_semesters_where_this_amount_of_ects_points_would_fit
Return into which semesters it may fit.
#
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 208
def return_array_of_semesters_where_this_amount_of_ects_points_would_fit(i)
_ = []
if (sum_of_ects_points_in(:first_semester)+i <= 30)
_ << :first_semester
end
if (sum_of_ects_points_in(:second_semester)+i <= 30)
_ << :second_semester
end
if (sum_of_ects_points_in(:third_semester)+i <= 30)
_ << :third_semester
end
if (sum_of_ects_points_in(:fourth_semester)+i <= 30)
_ << :fourth_semester
end
if (sum_of_ects_points_in(:fifth_semester)+i <= 30)
_ << :fifth_semester
end
if (sum_of_ects_points_in(:sixth_semester)+i <= 30)
_ << :sixth_semester
end
_
end
|
#return_long_semester_name(i) ⇒ Object
#
return_long_semester_name
#
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
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 113
def return_long_semester_name(i)
case i
when :first_semester
'First semester'
when :second_semester
'Second semester'
when :third_semester
'Third semester'
when :fourth_semester
'Fourth semester'
when :fifth_semester
'Fifth semester'
when :sixth_semester
'Sixth semester'
end
end
|
#run ⇒ Object
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 280
def run
_ = read_file_with_default_encoding(FILE_BACHELOR_VEKTOR_CURRICULUM)
use_this_regex = /STEOP START\n([=öüäa-zA-Z.,# 0-9\n()]*)STEOP END/ scanned = _.scan(use_this_regex).flatten.first.split("\n").select {|line|
line.include? 'ECTS'
}
@steop_lectures = scanned.map {|inner_line|
entry = inner_line.squeeze(' ')
if entry.start_with? '# '
entry[0, 2] = ''
end
if entry.include? '#'
entry = entry[0 .. entry.index('#')-1]
end
entry.strip
}
sort_the_lectures
fill_the_hash_with_subsections
end
|
#sort_the_lectures ⇒ Object
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 74
def sort_the_lectures
array = []
@all_lectures_from_the_curriculum.each {|this_lecture|
if @steop_lectures.include? this_lecture
array.prepend this_lecture
else
array << this_lecture
end
}
@all_lectures_from_the_curriculum = array
end
|
#which_semester? ⇒ Boolean
99
100
101
|
# File 'lib/studium/utility_scripts/semesterplaner/semesterplaner.rb', line 99
def which_semester?
@this_semester
end
|