Class: Studium::ExpandTimeRange
- Inherits:
-
Base
- Object
- Base
- Studium::ExpandTimeRange
show all
- Defined in:
- lib/studium/utility_scripts/expand_time_range.rb
Overview
Constant Summary
collapse
- 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
-
.[](i = '') ⇒ Object
# === Studium::ExpandTimeRange[] ========================================================================= #.
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) ⇒ ExpandTimeRange
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 39
def initialize(
i = nil,
run_already = true
)
reset
set_input(i)
if block_given?
yielded = yield
case yielded
when :disable_colours
disable_colours
when :do_not_report_anything
do_not_report_anything
end
end
run if run_already
end
|
Class Method Details
.[](i = '') ⇒ Object
#
Studium::ExpandTimeRange[]
#
391
392
393
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 391
def self.[](i = '')
new(i)
end
|
Instance Method Details
#array_to_report? ⇒ Boolean
Also known as:
array?, array
352
353
354
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 352
def array_to_report?
@array_to_report
end
|
#do_not_report_anything ⇒ Object
#
do_not_report_anything
#
103
104
105
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 103
def do_not_report_anything
@report_the_result = false
end
|
#ensure_proper_trailing_year(i) ⇒ Object
#
ensure_proper_trailing_year
We will try to ensure that there is a proper trailing year definition, to conform to the “dd.mm.yyyy” format which is commonly used in europe.
#
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 213
def ensure_proper_trailing_year(i)
_ = i.dup
unless _ =~ /\.\d{4}$/ if _ =~ /\d{1,2}\.\d{1,2}\.\d{2}/
_.insert(_.rindex('.')+1, '20') else
_ << '.' unless _.end_with? '.'
_ << current_year?
end
end
return _
end
|
#expand_and_show_the_dates_in_between ⇒ Object
#
expand_and_show_the_dates_in_between
#
342
343
344
345
346
347
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 342
def expand_and_show_the_dates_in_between
@array_to_report = return_array_of_days_between_this_start_and_this_end_range(
@start_day, @end_day
)
report(@array_to_report)
end
|
151
152
153
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 151
def input?
@input
end
|
#
This method will mostly convert input such as “2.11.2018” towards “02.11.2018”.
#
198
199
200
201
202
203
204
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 198
def properly_space_out_date_format(i)
_ = i.to_s.dup
if _ =~ /^\d{1}\./
_.prepend '0' end
return _
end
|
#remove_weekends_from_this_array(i) ⇒ Object
#
remove_weekends_from_this_array
This method will remove all weekend-days from the passed-in Array.
#
373
374
375
376
377
378
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 373
def remove_weekends_from_this_array(i)
i.reject {|entry|
weekday = return_weekday_of(entry)
(weekday == 'Saturday') or (weekday == 'Sunday')
}
end
|
#report(this_array = @array_to_report) ⇒ Object
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 239
def report(
this_array = @array_to_report
)
@result = ''.dup if @report_the_result
unless this_array.empty?
e; this_array.each {|entry|
weekday_entry = weekday_at(entry)
padded_and_colourized_weekday = turquoise(
weekday_entry.to_s.ljust(10)
)
result = ''.dup
if @format_for_use_in_the_file_lecture_information
result << mediumpurple(' - ')+
return_colourized_quote_character
else
result << ' '
end
result << "#{padded_and_colourized_weekday} "\
"#{steelblue(entry)}"
if @append_this_string
unless @append_this_string.start_with? ', '
@append_this_string.prepend(', ')
end
result << olivedrab(
@append_this_string
)
end
if @format_for_use_in_the_file_lecture_information
result << return_colourized_quote_character
end
result << "\n"
@result << result
print result
}; e
end
end
end
|
#reset ⇒ Object
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
90
91
92
93
94
95
96
97
98
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 64
def reset
super()
@namespace = NAMESPACE
@array_to_report = []
@start_day = nil
@end_day = nil
@format_for_use_in_the_file_lecture_information = true
@append_this_string = ', 09:00-18:00'
@report_the_result = true
end
|
#result? ⇒ Boolean
232
233
234
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 232
def result?
@result
end
|
#return_array_of_days_between_this_start_and_this_end_range(a = @start_day, b = @end_day) ⇒ Object
#
return_array_of_days_between_this_start_and_this_end_range
This is the method that will return all days between the specified start-point and end-point.
#
284
285
286
287
288
289
290
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
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 284
def return_array_of_days_between_this_start_and_this_end_range(
a = @start_day,
b = @end_day
)
array = []
splitted1 = a.split('.')
day1 = splitted1.first
month1 = splitted1[1].to_i
year = splitted1[2]
diff = Time.parse(b) - Time.parse(a)
n_days = ((diff / ONE_DAY).ceil + 1)
counter = 0
n_days.times {
day_to_use = day1.to_i+counter.to_i
month_to_use = month1
n_days_in_this_month = this_month_has_n_days?(month_to_use)
if day_to_use > n_days_in_this_month.to_i
day_to_use = 1
day1 = 1
month1 += 1
month_to_use += 1
counter = 0
end
counter += 1
month_to_use = month_to_use.to_s.rjust(2,'0')
array << properly_space_out_date_format(
day_to_use.to_i.to_s+'.'+
month_to_use.to_s+'.'+
year.to_s
)
}
array = remove_weekends_from_this_array(array)
return array
end
|
#return_colourized_quote_character(use_this_colour = :darkslateblue) ⇒ Object
#
return_colourized_quote_character
The first argument shall be the colour that is to be used.
#
362
363
364
365
366
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 362
def return_colourized_quote_character(
use_this_colour = :darkslateblue
)
send(use_this_colour, '"')
end
|
#run ⇒ Object
383
384
385
386
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 383
def run
try_to_determine_the_start_day_and_the_end_day
expand_and_show_the_dates_in_between
end
|
#set_end_day(i) ⇒ Object
174
175
176
177
178
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 174
def set_end_day(i)
i = ensure_proper_trailing_year(i)
i = properly_space_out_date_format(i)
@end_day = i
end
|
#
Example for different input:
" Donnerstag 04.10. bis Montag 15.10.2018 jeweils 9.30 bis 17.30 Uhr"
#
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/expand_time_range.rb', line 115
def set_input(i = '')
i = i.first if i.is_a? Array
i = i.to_s.dup.strip
i.chop! if i.end_with? ','
i.sub!(/ bis /,'-') if i.include? ' bis '
i = remove_weeknames_from(i)
i.strip!
if i.include? ' - '
i.sub!(/ - /, '-')
end
if i.include? '.- '
i.sub!(/\.- /,'.-')
end
if i.include? ' until '
i.sub!(/ until /,'-')
end
if i.include?('jeweils') and i.include?('Uhr')
splitted = i.split('jeweils').map(&:strip)
new_time = splitted.last.tr('.',':').sub(/ Uhr/,'').sub(/ bis /,'-')
if new_time =~ /^\d{1}:/
new_time.prepend('0')
end
@append_this_string = new_time
i = splitted.first
end
i.delete!(' ') @input = i
end
|
#set_start_day(i) ⇒ Object
#
set_start_day
Note that we will also ensure that the year is in a correct format here, aka if we have a year such as '18' to become '2018' instead.
#
186
187
188
189
190
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 186
def set_start_day(i)
i = ensure_proper_trailing_year(i)
i = properly_space_out_date_format(i)
@start_day = i
end
|
#try_to_determine_the_start_day_and_the_end_day ⇒ Object
#
try_to_determine_the_start_day_and_the_end_day
#
158
159
160
161
162
163
164
165
166
167
168
169
|
# File 'lib/studium/utility_scripts/expand_time_range.rb', line 158
def try_to_determine_the_start_day_and_the_end_day
_ = @input
if _.include? '-'
splitted = _.split('-')
set_start_day(splitted[0])
set_end_day(splitted[1])
end
end
|