Class: Studium::ShowAllLectures
- Inherits:
-
Base
- Object
- Base
- Studium::ShowAllLectures
show all
- Defined in:
- lib/studium/utility_scripts/show_all_lectures.rb
Overview
Constant Summary
collapse
- NAMESPACE =
inspect
- ALSO_SHOW_REMOTE_URL =
#
ALSO_SHOW_REMOTE_URL
If true then we will also show the remote URL on the terminal.
#
true
- SAVE_FILE =
Studium.html_log_directory?+'Vorlesungsverzeichnis.html'
- CURRENT_YEAR =
Time.now.year.to_s
- CURRENT_SEMESTER =
'S'+CURRENT_YEAR
- REMOTE_URL =
'http://online.univie.ac.at/vlvz?kapitel=3001&semester='+CURRENT_SEMESTER
- REGEX_FOR_IDS =
#
REGEX_FOR_IDS
We need the ID of the lecture, the type of the lecture and the name of the lecture. This is what the following regex will obtain.
For the following regex, see this link:
http://rubular.com/r/IrKZKqfRAh
#
/<div class="vlvz_langtitel">(\d+) <abbr title=".+">(.*{1,2})<\/abbr><span class="vlvz_titel">(.+)<\/span><\/div>/
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
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) ⇒ ShowAllLectures
83
84
85
86
87
88
89
90
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 83
def initialize(
i = nil,
run_already = true
)
reset
set_input(i)
run if run_already
end
|
Instance Method Details
#analyze_big_lecture_chunk(i) ⇒ Object
#
analyze_big_lecture_chunk
#
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 291
def analyze_big_lecture_chunk(i)
i.delete(N) if i.include? N if i.include? '<div class="vlvz_vortragende">N.N.</div>'
name_of_lecturers = [ swarn('unknown lecturers') ]
else
name_of_lecturers =
i.scan(/<div class="vlvz_vortragende"><a href="pers\?pkey=\d+">(.+) <\/a>/).flatten.first
end
if name_of_lecturers.include? '</a></div>'
name_of_lecturers = name_of_lecturers[0..(name_of_lecturers.index('</a></div>')-1)]
end
name_of_lecturers = remove_html(name_of_lecturers)
name_of_lecturers = name_of_lecturers.split(',').map(&:strip)
regex_for_hours_and_ects_points =
/<div class="vlvz_wochenstunden">(\d+ Stunde\(n\),\s+\d+,\d+ ECTS) credits<\/div>/
hours_and_ects_points = i.scan(regex_for_hours_and_ects_points).flatten.first.squeeze(' ')
n_hours, n_ects_points = hours_and_ects_points.split('),').map(&:strip)
lecture_id, lecture_type, name_of_lecture = i.scan(REGEX_FOR_IDS).flatten
original_lecture_id = lecture_id.to_s.dup
lecture_id = lecture_id.center(10)
lecture_id = colourize_lecture_id(lecture_id)
name_of_lecture = sanitize_encoding(name_of_lecture).strip
name_of_lecturers = name_of_lecturers.join(', ')
name_of_lecturers = sanitize_encoding(name_of_lecturers)
name_of_lecturers = name_of_lecturers.center(16)
lecture_type = lecture_type.center(5)
lecture_type = colourize_lecture_type(lecture_type)
n_hours = n_hours.gsub(/Stunde\(n/,'').to_f.to_s.center(5)
n_hours = colourize_hours_per_week(n_hours)
show_main_header e lecture_id+' | '+lecture_type+' | '+
colourize_name_of_lecture(name_of_lecture.ljust(50-2))+' | '+
colourize_lecturers(name_of_lecturers)+' | '+
n_hours+' | '+
colourize_ects(n_ects_points.gsub(/ECTS/,'').tr(',','.'))
if show_remote_url?
remote_url = ' http://online.univie.ac.at/vlvz?&lvnr='+
original_lecture_id+'&semester='+CURRENT_SEMESTER
e
e yellow(remote_url)
e
end
end
|
#colourize_ects(i) ⇒ Object
248
249
250
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 248
def colourize_ects(i)
orange(i)
end
|
#colourize_hours_per_week(i) ⇒ Object
#
colourize_hours_per_week
#
379
380
381
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 379
def colourize_hours_per_week(i)
dodgerblue(i)
end
|
#colourize_lecture_id(i) ⇒ Object
226
227
228
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 226
def colourize_lecture_id(i)
paleturquoise(i)
end
|
#colourize_lecture_type(i) ⇒ Object
#
colourize_lecture_type
#
372
373
374
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 372
def colourize_lecture_type(i)
lawngreen(i)
end
|
#colourize_lecturers(i) ⇒ Object
255
256
257
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 255
def colourize_lecturers(i)
slateblue(i)
end
|
#colourize_name_of_lecture(i) ⇒ Object
#
colourize_name_of_lecture
#
219
220
221
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 219
def colourize_name_of_lecture(i)
mediumorchid(i)
end
|
#dataset? ⇒ Boolean
193
194
195
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 193
def dataset?
@dataset
end
|
#display_main_header ⇒ Object
Also known as:
show_main_header
#
display_main_header
This method will display the header for a given lecture at hand.
#
355
356
357
358
359
360
361
362
363
364
365
366
367
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 355
def display_main_header
e colourize_lecture_id('Lecture ID')+
' | '+
colourize_lecture_type('Type'.ljust(5))+
' | '+
colourize_name_of_lecture('Name of Lecture'.ljust(50))+
' | '+
colourize_lecturers('Lecturers'.center(16))+
' | '+
colourize_hours_per_week('hours per week')+
' | '+
colourize_ects('ECTS credits')
end
|
#do_update_save_file(i = SAVE_FILE) ⇒ Object
149
150
151
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 149
def do_update_save_file(i = SAVE_FILE)
File.delete(i) if File.exist? i
end
|
#download_remote_page ⇒ Object
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 163
def download_remote_page
if File.exist? SAVE_FILE
opnn; e 'We will read from the file `'+sfile(SAVE_FILE)+'`.'
@dataset = File.read(SAVE_FILE)
else
_ = remote_url?
opnn; e 'We will read from the remote URL `'+sfancy(_)+'`.'
@dataset = open(_).read
end
@original_dataset = @dataset.dup save_original_dataset
end
|
156
157
158
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 156
def input?
@input
end
|
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 129
def (i)
case i when /-?-?help/
show_help
exit
when /-?-?update/
opnn; e 'Updating main entry.'
do_update_save_file
end
end
|
#obtain_name_of_lecturer_amount_of_hours_and_ects_points ⇒ Object
#
obtain_name_of_lecturer_amount_of_hours_and_ects_points
Here we have to re-scan the dataset, in order to extract more information from the original dataset.
#
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 265
def obtain_name_of_lecturer_amount_of_hours_and_ects_points
@original_dataset.split(N).each {|line|
if line =~ REGEX_FOR_IDS
if @usher.open? analyze_big_lecture_chunk(@usher.string?)
@usher.reset
else @usher.do_open
end
@usher << line
else
@usher << line
end
}
end
|
#remote_url? ⇒ Boolean
104
105
106
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 104
def remote_url?
REMOTE_URL
end
|
#remove_html(i) ⇒ Object
346
347
348
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 346
def remove_html(i)
Roebe.remove_html(i)
end
|
#reset ⇒ Object
95
96
97
98
99
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 95
def reset
super()
@hash_for_ids = {}
@namespace = NAMESPACE
end
|
#run ⇒ Object
386
387
388
389
390
391
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 386
def run
download_remote_page
scan_for_all_ids
sanitize_dataset
obtain_name_of_lecturer_amount_of_hours_and_ects_points
end
|
#sanitize_dataset ⇒ Object
#
sanitize_dataset
Currently we only strip the second entry.
#
209
210
211
212
213
214
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 209
def sanitize_dataset
@dataset.map! {|entry|
entry[2].strip! entry
}
end
|
#sanitize_encoding(i) ⇒ Object
233
234
235
236
237
238
239
240
241
242
243
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 233
def sanitize_encoding(i)
case i.encoding.to_s
when ENCODING_UTF
i = i.force_encoding(ENCODING_ISO)
end
require 'cyberweb/toplevel_methods/umlaute.rb'
WebObject.convert_back_german_umlauts(i) end
|
#save_original_dataset ⇒ Object
#
save_original_dataset
#
186
187
188
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 186
def save_original_dataset
write_what_into(@dataset, SAVE_FILE)
end
|
#scan_for_all_ids ⇒ Object
200
201
202
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 200
def scan_for_all_ids
@dataset = @dataset.scan(REGEX_FOR_IDS)
end
|
111
112
113
114
115
116
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 111
def set_input(i = '')
i = i.first if i.is_a? Array
i = i.to_s.dup
@input = i
(@input)
end
|
#show_help ⇒ Object
121
122
123
124
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 121
def show_help
require 'class_docu_shower'
ClassDocuShower.new(__FILE__) { :do_not_report_the_filename }
end
|
#show_remote_url? ⇒ Boolean
284
285
286
|
# File 'lib/studium/utility_scripts/show_all_lectures.rb', line 284
def show_remote_url?
ALSO_SHOW_REMOTE_URL
end
|