Class: Studium::SolvedEcts
- Inherits:
-
Base
- Object
- Base
- Studium::SolvedEcts
show all
- Defined in:
- lib/studium/ects/solved_ects/reset.rb,
lib/studium/ects/solved_ects/constants.rb,
lib/studium/ects/solved_ects/solved_ects.rb
Overview
Constant Summary
collapse
- NAMESPACE =
inspect
- DEFAULT_ECTS_POINTS_TO_SEARCH_FOR =
#
DEFAULT_ECTS_POINTS_TO_SEARCH_FOR
By default, we will look for n ECTS points - usually being 3.0 ECTS points. Most lectures conform to that number.
#
3.0
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
-
.[](i = '') ⇒ Object
# === Studium::SolvedEcts[] ========================================================================= #.
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(commandline_arguments = ARGV, run_already = true) ⇒ SolvedEcts
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 32
def initialize(
commandline_arguments = ARGV,
run_already = true
)
reset
check_for_help(commandline_arguments)
set_commandline_arguments(
commandline_arguments
)
run if run_already
end
|
Class Method Details
.[](i = '') ⇒ Object
#
Studium::SolvedEcts[]
#
316
317
318
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 316
def self.[](i = '')
new(i)
end
|
Instance Method Details
#check_for_help(i) ⇒ Object
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 94
def check_for_help(i)
i = i.join(' ').strip if i.is_a? Array
if i =~ /-?-?help/
show_help
exit
end
end
|
#dataset? ⇒ Boolean
Also known as:
dataset
236
237
238
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 236
def dataset?
@dataset
end
|
#filter_away_incorrect_n_ects_points ⇒ Object
#
filter_away_incorrect_n_ects_points
#
173
174
175
176
177
178
179
180
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 173
def filter_away_incorrect_n_ects_points
_ = n_ects_points?
@dataset.select! {|line|
splitted = line.split('|').map(&:strip)
n_ects_points = splitted[2].to_f
n_ects_points == _
}
end
|
#filter_away_non_bachelor_lectures ⇒ Object
#
filter_away_non_bachelor_lectures
This method will filter away all non-bachelor lectures.
#
200
201
202
203
204
205
206
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 200
def filter_away_non_bachelor_lectures
@dataset.select! {|line|
splitted = line.split('|').map(&:strip)
type_of_lecture = splitted[5].strip
type_of_lecture.include? 'B' }
end
|
#filter_away_non_master_lectures ⇒ Object
#
filter_away_non_master_lectures
This method will filter away all non-master lectures.
#
187
188
189
190
191
192
193
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 187
def filter_away_non_master_lectures
@dataset.select! {|line|
splitted = line.split('|').map(&:strip)
type_of_lecture = splitted[5].strip
type_of_lecture.include? 'M'
}
end
|
#filter_only_at_this_university(at_this_university) ⇒ Object
#
filter_only_at_this_university
#
222
223
224
225
226
227
228
229
230
231
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 222
def filter_only_at_this_university(at_this_university)
dataset.select! {|line|
splitted = line.split('|').map(&:strip)
this_university = splitted[4].downcase this_university == at_this_university.downcase }
end
|
#parse_commandline_arguments ⇒ Object
#
parse_commandline_arguments
Note that this method must be invoked after @dataset has already been set.
#
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 127
def parse_commandline_arguments
@commandline_arguments.each {|entry|
case entry when /\d{1,2}.?\d{0,1}/
set_search_for_n_ects_points(entry)
when /^-?-?also-?show-?themes/
@also_show_themes = true
when /^-?-?only-?at-?the-?(.+)/
_ = $1.to_s.dup
filter_only_at_this_university(_) @only_at_this_university = _
when /^-?-?only(-|_)?master$/,
/^-?-?master/,
:master
filter_away_non_master_lectures
@bachelor_or_master = 'master'
when /^-?-?only(-|_)?bachelor/,
/^-?-?bachelor$/,
:bachelor
filter_away_non_bachelor_lectures
@bachelor_or_master = 'bachelor'
end
}
end
|
#report_result ⇒ Object
Also known as:
report
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 259
def report_result
if @dataset.empty?
e "No matching result was found to have exactly "\
"#{sfancy(n_ects_points.to_s)} ECTS points."
else
@dataset.each_with_index {|line, index| index += 1
splitted = line.split('|').map(&:strip)
date_of_the_lecture = splitted.first
name_of_the_lecture = splitted.last
bachelor_or_master = olivedrab(splitted[5].center(3))
formatted_index = orange( "#{index}) ".rjust(5) )
colourized_date_of_the_lecture = lightgreen(date_of_the_lecture)
n_ects = splitted[2]
colourized_n_ects = royalblue(" [#{n_ects} ECTS]")
colourized_grade = dodgerblue(" #{splitted[3]}")
e formatted_index+
sfancy(name_of_the_lecture.ljust(84))+
darkgreen(' | ')+
bachelor_or_master+' '+
colourized_date_of_the_lecture+
colourized_n_ects+
colourized_grade
if @also_show_themes and @theme_of_exams
key = "#{date_of_the_lecture}, #{name_of_the_lecture}"
if @theme_of_exams.has_key? key
array_associated_themes = @theme_of_exams[key]
string_to_display = array_associated_themes.sort.join(', ').strip
result = (' ' * 80)+
' | '+
forestgreen("- #{string_to_display}")
e result
end
end
}; e
end
end
|
#reset ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/studium/ects/solved_ects/reset.rb', line 17
def reset
super()
@namespace = NAMESPACE
@search_for_n_ects_points = nil if File.exist? main_file?
@dataset = ::Studium.completed_exams?
else
e "No file called `#{sfile(main_file?)}` exists. We thus can "\
"not continue to work and will exit as a consequence."
exit
end
@also_show_themes = false
@only_at_this_university = nil
@bachelor_or_master = ''
end
|
#run ⇒ Object
306
307
308
309
310
311
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 306
def run
parse_commandline_arguments
safeguard_against_nil_values
filter_away_incorrect_n_ects_points
report_result
end
|
#safeguard_against_nil_values ⇒ Object
#
safeguard_against_nil_values
Handle any potential nil values here.
#
213
214
215
216
217
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 213
def safeguard_against_nil_values
if @search_for_n_ects_points.nil?
@search_for_n_ects_points = DEFAULT_ECTS_POINTS_TO_SEARCH_FOR
end
end
|
#search_for_n_ects_points? ⇒ Boolean
Also known as:
n_ects_points?, n_ects_points
#
search_for_n_ects_points?
#
116
117
118
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 116
def search_for_n_ects_points?
@search_for_n_ects_points
end
|
#set_search_for_n_ects_points(i) ⇒ Object
#
set_search_for_n_ects_points
#
108
109
110
111
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 108
def set_search_for_n_ects_points(i)
i = i.first if i.is_a? Array
@search_for_n_ects_points = i.to_f end
|
243
244
245
246
247
248
249
250
251
252
253
254
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 243
def
_ = rev+
'Next showing all passed '+@bachelor_or_master+' exams that '\
'have '+sfancy(n_ects_points.to_s)+' ECTS points'
_.squeeze!(' ')
if @only_at_this_university
_ << " at the university #{@only_at_this_university}"
end
_ << ':'
e _
e
end
|
#show_help ⇒ Object
#
show_help (help tag)
To invoke this method from the commandline, do:
solved_ects --help
To invoke other combinations, do:
solved_ects 2.0 --only-bachelor
#
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
# File 'lib/studium/ects/solved_ects/solved_ects.rb', line 63
def show_help
invoke_this_program_via_this_command = 'solved_ects'
e
opnn; e 'This class will specifically display all passed exams '\
'that correspond'
opnn; e 'to the given amount of ECTS points that were passed '\
'as argument.'
e
opnn; e "For example, if your input is #{orange('2.0')}, then we "\
"will display all"
opnn; e 'exams that correspond to exactly 2.0 ECTS.'
e
opnn; e 'This thus allows you to, for instance, keep track of exams that'
opnn; e 'may correspond to another exam in regards to its equivalency.'
e
opnn; e 'If you wish to show only Master exams, then use any of the '\
'(synonymous) options containing the string "master",'
opnn; e 'in the following display:'
e
e " #{invoke_this_program_via_this_command} 2.0"
e " #{invoke_this_program_via_this_command} 2.0 --only-bachelor"
e " #{invoke_this_program_via_this_command} 2.0 --only-master"
e " #{invoke_this_program_via_this_command} 2.0 --bachelor"
e " #{invoke_this_program_via_this_command} 2.0 --master"
e " #{invoke_this_program_via_this_command} 3.0 --only-bachelor --only-at-the-BOKU"
e
end
|