Class: Studium::LecturesAttributedToUniversities

Inherits:
Base
  • Object
show all
Defined in:
lib/studium/utility_scripts/lectures_attributed_to_universities.rb

Overview

Studium::LecturesAttributedToUniversities

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect
DEFAULT_CURRICULUM =
#

DEFAULT_CURRICULUM

#
:bachelor_vektorx

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

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_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 = DEFAULT_CURRICULUM, run_already = true) ⇒ LecturesAttributedToUniversities

#

initialize

#


35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 35

def initialize(
    commandline_arguments = DEFAULT_CURRICULUM,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  if block_given?
    yielded = yield
    case yielded
    when :do_not_show_the_title_and_do_not_report
      @show_the_title_on_the_commandline = false
      do_not_report_anything
    when :do_not_show_the_title
      @show_the_title_on_the_commandline = false
    end
  end
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Studium::LecturesAttributedToUniversities[]

#


331
332
333
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 331

def self.[](i = '')
  new(i)
end

Instance Method Details

#do_not_report_anythingObject

#

do_not_report_anything

#


128
129
130
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 128

def do_not_report_anything
  @do_report = false
end

#do_not_show_the_titleObject

#

do_not_show_the_title

#


135
136
137
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 135

def do_not_show_the_title
  @show_the_title_on_the_commandline = false
end
#

menu (menu tag)

#


226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 226

def menu(
    i = @commandline_arguments
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    if i.to_s.include?('bachelor') or i.to_s.include?('master')
      set_use_this_curriculum_file(i.to_sym)
    elsif i.is_a? Symbol
      set_use_this_curriculum_file(i)
    else
      case i # case tag
      # =================================================================== #
      # === --no-title
      # =================================================================== #
      when /-?-?no(-|_)title/
        do_not_show_the_title
      else
        # ================================================================= #
        # Try it anyway, as a Symbol
        # ================================================================= #
        set_use_this_curriculum_file(i.to_sym)
      end
    end
  end
end

#reject_entries_that_begin_with_two_hyphens_and_pass_them_into_menu(i) ⇒ Object

#

reject_entries_that_begin_with_two_hyphens_and_pass_them_into_menu

#


115
116
117
118
119
120
121
122
123
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 115

def reject_entries_that_begin_with_two_hyphens_and_pass_them_into_menu(i)
  if i.is_a?(String) and i.any? {|line| line.start_with? '--' }
    menu(
      i.select {|inner_line| inner_line.start_with? '--' }
    )
    i.reject! {|inner_line| inner_line.start_with? '--' }
  end
  return i
end

#report_the_percentagesObject Also known as: report

#

report_the_percentages (report tag)

#


256
257
258
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
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 256

def report_the_percentages
  if @do_report
    report_the_title_of_the_curriculum
    total = @total_ects.to_f
    e
    sorted_hash?.each {|name_of_the_university, n_ects_points_attributed_to_that_university|
      percentage_value = (
        (n_ects_points_attributed_to_that_university * 100) / total
      ).round(2)
      percentage_value = '%.2f' % percentage_value
      colourized_percentage_value = springgreen(
          '('+percentage_value.to_s.rjust(5)+'% belong to the '
        )+
        seagreen(name_of_the_university)+
        springgreen(')')
      padded_name_of_the_university = name_of_the_university.ljust(18)
      # ===================================================================== #
      # Report the result next.
      # ===================================================================== #
      e '  '+
        sfancy(padded_name_of_the_university)+
        slateblue(
          n_ects_points_attributed_to_that_university.to_s.rjust(5)+' ECTS'
        )+
        ' '+
        colourized_percentage_value
    }
    e ' '.ljust(20)+
       royalblue('-' * 45)
    e ' '.ljust(21)+
      slateblue(@total_ects.to_f.to_s+' ECTS')
  end
end

#report_the_title_of_the_curriculumObject

#

report_the_title_of_the_curriculum

#


166
167
168
169
170
171
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 166

def report_the_title_of_the_curriculum
  if @show_the_title_on_the_commandline
    e
    e '  '+sfancy(@title_of_the_curriculum)
  end
end

#resetObject

#

reset (reset tag)

#


87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 87

def reset
  super()
  # ======================================================================= #
  # === @namespace
  # ======================================================================= #
  @namespace = NAMESPACE
  # ======================================================================= #
  # === @dataset_from_the_file_lecture_information
  # ======================================================================= #
  @dataset_from_the_file_lecture_information = dataset_lecture_information
  # ======================================================================= #
  # === @hash_tracking_the_universities
  # ======================================================================= #
  @hash_tracking_the_universities = {}
  @hash_tracking_the_universities.default = 0
  # ======================================================================= #
  # === @total_ects
  # ======================================================================= #
  @total_ects = 0
  @title_of_the_curriculum = nil
  @show_the_title_on_the_commandline = true
  @use_these_curricula_files = :bachelor_vektorx
  @do_report = true
end

#return_html_stringObject Also known as: html_string

#

return_html_string (www tag, html tag)

This method will return a “html string” - that is, a string that can be embedded into a .html page.

#


200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 200

def return_html_string
  _ = ''.dup # This will be the String that will be returned.
  total = total?
  sorted_hash?.each {|name_of_the_university, n_ects_points_attributed_to_that_university|
    percentage_value = (
      (n_ects_points_attributed_to_that_university * 100) / total
    ).round(2)
    percentage_value = '%.2f' % percentage_value
    colourized_percentage_value = '<span style="color: springgreen">'+
        '('+percentage_value.to_s.rjust(5)+'% belong to the '.dup
    colourized_percentage_value << name_of_the_university
    colourized_percentage_value << '<span style="color:springgreen">)</span>'
    padded_name_of_the_university = name_of_the_university
    # ===================================================================== #
    # Report the result next.
    # ===================================================================== #
    _ << '  <span style="color: lightblue">'+padded_name_of_the_university.ljust(10)+'</span>'
    _ << '<span style="color:slateblue">'+n_ects_points_attributed_to_that_university.to_s.rjust(5)+' ECTS </span>'
    _ <<  ' '+colourized_percentage_value+N
  }
  return _
end

#runObject

#

run (run tag)

#


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
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 293

def run
  menu
  dataset = []
  @use_these_curricula_files.each {|this_file|
    if File.exist? this_file
      set_title(
        return_title_from_this_curriculum_file(
          this_file
        )
      )
    end
    dataset << read_dataset_from_a_curriculum_file(this_file)
  }
  dataset.flatten!
  dataset.reject! {|line| line.start_with? '=====' }
  dataset.each {|name_of_the_lecture|
    # ===================================================================== #
    # The name of the lecture variable can include '  ' tokens, which
    # we do not want.
    # ===================================================================== #
    name_of_the_lecture.squeeze!(' ')
    name_of_the_lecture.strip! # <- Necessary as the input may be faulty.
    if @dataset_from_the_file_lecture_information.has_key? name_of_the_lecture
      pointer = @dataset_from_the_file_lecture_information[name_of_the_lecture]
      n_ects  = pointer[:ects]
      @total_ects += n_ects
      this_university = pointer[:university]
      @hash_tracking_the_universities[this_university] += n_ects
    else
      opnn; e "Not registered: #{sfancy(name_of_the_lecture)}"
    end
  }
  report_the_percentages
end

#set_commandline_arguments(i = DEFAULT_CURRICULUM) ⇒ Object

#

set_commandline_arguments

#


59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 59

def set_commandline_arguments(i = DEFAULT_CURRICULUM)
  if i.is_a?(Array) and i.empty?
    i << DEFAULT_CURRICULUM # Use a default curriculum value.
  end
  unless i.is_a? Array
    i = [i]
  end
  i.map! {|line|
    if line.is_a?(String) and line.start_with?(':')
      line = line.dup if line.frozen?
      line[0,1] = ''
    end
    line
  }
  # ======================================================================= #
  # Next, all options that start with '--' will be
  # processed at once, through menu().
  # ======================================================================= #
  i = reject_entries_that_begin_with_two_hyphens_and_pass_them_into_menu(i)
  if i.is_a?(Array) and i.empty?
    i << DEFAULT_CURRICULUM # Use a default curriculum value.
  end
  @commandline_arguments = i
end

#set_title_of_the_curriculum(i = nil) ⇒ Object Also known as: set_title

#

set_title_of_the_curriculum

#


159
160
161
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 159

def set_title_of_the_curriculum(i = nil)
  @title_of_the_curriculum = i
end

#set_use_this_curriculum_file(i = :bvektorx) ⇒ Object

#

set_use_this_curriculum_file

#


142
143
144
145
146
147
148
149
150
151
152
153
154
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 142

def set_use_this_curriculum_file(
    i = :bvektorx
  )
  if i.is_a? Symbol
    i = return_file_for_this_curriculum(i)
  end
  unless i.is_a? Array
    i = [i]
  end
  i.flatten!
  i.compact! # We have no use for nil-values here.
  @use_these_curricula_files = i
end

#sorted_hash?Boolean

#

sorted_hash?

This method will return a sorted Hash - sorted by ECTS points.

#

Returns:

  • (Boolean)


178
179
180
181
182
183
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 178

def sorted_hash?
  sorted_by_n_ects_points_first = @hash_tracking_the_universities.sort_by {|a, b|
    b
  }.reverse
  sorted_by_n_ects_points_first
end

#total?Boolean

#

total?

This method is guaranteed to always return the result as a Float.

#

Returns:

  • (Boolean)


190
191
192
# File 'lib/studium/utility_scripts/lectures_attributed_to_universities.rb', line 190

def total?
  @total_ects.to_f
end