Class: Studium::PassedEctsPerYear

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

Overview

Studium::PassedEctsPerYear

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

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?, #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

Methods included from RunmodeModule

#commandline?, #runmode?, #set_commandline_mode, #set_runmode, #set_www_mode, #www_mode?

Methods included from CommandlineArgumentsModule

#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

Methods included from HtmlColoursModule

#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) ⇒ PassedEctsPerYear

#

initialize

#


34
35
36
37
38
39
40
41
42
43
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 34

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::PassedEctsPerYear[]

#


296
297
298
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 296

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

Instance Method Details

#blue_linerObject

#

blue_liner

#


208
209
210
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 208

def blue_liner
  e royalblue('-'*80)
end

#clear_the_primary_hashObject

#

clear_the_primary_hash

#


68
69
70
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 68

def clear_the_primary_hash
  @internal_hash[:hash].clear
end

#dataset?Boolean Also known as: all_lectures?, dataset_from_the_file_lecture_information?

#

dataset?

#

Returns:

  • (Boolean)


89
90
91
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 89

def dataset?
  @internal_hash[:dataset]
end

#display_the_yearly_amount_of_ECTS_passed_from_the_file_lecture_information(i = dataset? ) ⇒ Object

#

display_the_yearly_amount_of_ECTS_passed_from_the_file_lecture_information

#


215
216
217
218
219
220
221
222
223
224
225
226
227
228
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 215

def display_the_yearly_amount_of_ECTS_passed_from_the_file_lecture_information(
    i = dataset?
  )
  i.each_pair {|a, b|
    already_solved = b[:already_solved]
    if already_solved
      n_ECTS = b[:ects]
      already_solved_at = b[:already_solved_at].to_s
      year = already_solved_at.split('.').last.to_i
      @internal_hash[:hash][year] += n_ECTS
    end
  }
  report(hash?) unless www_mode?
end

#hash?Boolean

#

hash?

#

Returns:

  • (Boolean)


233
234
235
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 233

def hash?
  @internal_hash[:hash]
end
#

menu (menu tag)

#


107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 107

def menu(
    i = commandline_arguments?
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i # case tag
    # ===================================================================== #
    # === pects --csv-file
    # ===================================================================== #
    when /^-?-?csv(-|_)?file$/i,
         /^-?-?standalone(-|_)?file$/i
      read_in_local_csv_file # This will also call report().
      exit
    # ===================================================================== #
    # === pects --help
    # ===================================================================== #
    when /^-?-?help$/i
      show_help
      exit
    else
      unless i.empty?
        use_the_courses_from_this_curriculum(i)
      end
    end
  end
end

#read_in_local_csv_fileObject

#

read_in_local_csv_file

#


138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 138

def read_in_local_csv_file
  _ = local_csv_file?
  if File.exist? _
    _ = readlines(_).reject {|line|
      line.strip.empty? or line.strip.start_with?('#')
    }
    _.each {|line|
      splitted = line.split('|').map {|inner_entry|
        inner_entry.delete(' ') # "30.01.2023 | 3.0 |  3.0 | 3 |   BOKU  |   B  |   VO  |   835100   | 2022W | Mathematik (LBT)\n",
      }
      year = splitted[0].split('.').last.to_i
      n_ECTS = splitted[2].to_f
      @internal_hash[:hash][year] += n_ECTS
    }
    report(@internal_hash[:hash])
  else
    opnn; no_file_exists_at(_)
  end
end

#report(i = ) ⇒ Object

#

report (report tag)

#


182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 182

def report(
    i = @internal_hash[:hash]
  )
  sorted = i.sort_by {|year, n_ECTS|
    year.to_i
  }.reverse
  @internal_hash[:n_ECTS_in_total] = 0
  e
  blue_liner
  Hash[sorted].each_pair {|year, n_ECTS|
    if n_ECTS.is_a?(Hash) and n_ECTS.has_key?(:ects)
      n_ECTS = n_ECTS[:ects]
    end
    @internal_hash[:n_ECTS_in_total] += n_ECTS
    e steelblue(
        ('  Year: '+year.to_s).ljust(14)
      )+' '+lightgreen(n_ECTS.to_s.rjust(5)+' ECTS were passed')
  }
  blue_liner
  e lightgreen(@internal_hash[:n_ECTS_in_total].to_s.rjust(20)+' ECTS in total')
  e
end

#resetObject

#

reset (reset tag)

#


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 48

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === :hash
  #
  # This Hash is used for "dumpable data".
  # ======================================================================= #
  @internal_hash[:hash] = {}
  @internal_hash[:hash].default = 0.0
  @internal_hash[:n_ECTS_in_total] = 0
  # ======================================================================= #
  # === :dataset
  # ======================================================================= #
  set_dataset(dataset_from_file_lecture_information)
end

#return_ects_points(this_lecture) ⇒ Object

#

return_ects_points

#


82
83
84
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 82

def return_ects_points(this_lecture)
  dataset?[this_lecture][:ects]
end

#return_sorted_hash(i = ) ⇒ Object

#

return_sorted_hash

#


161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 161

def return_sorted_hash(
    i = @internal_hash[:hash]
  )
  result = {}
  @internal_hash[:n_ECTS_in_total] = 0 # Reset it here.
  sorted = i.sort_by {|year, n_ECTS|
    year.to_i
  }.reverse
  result = Hash[sorted]
  result.each_pair {|year, n_ECTS|
    if n_ECTS.is_a?(Hash) and n_ECTS.has_key?(:ects)
      n_ECTS = n_ECTS[:ects]
    end
    @internal_hash[:n_ECTS_in_total] += n_ECTS
  }
  return result
end

#runObject

#

run (run tag)

#


285
286
287
288
289
290
291
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 285

def run
  menu
  if www_mode? # For use in .cgi scripts and so forth.
  else
    display_the_yearly_amount_of_ECTS_passed_from_the_file_lecture_information
  end
end

#set_dataset(i) ⇒ Object

#

set_dataset

#


75
76
77
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 75

def set_dataset(i)
  @internal_hash[:dataset] = i
end

#show_helpObject

#

show_help (help tag)

#


97
98
99
100
101
102
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 97

def show_help
  e 'The following options are available:'
  e
  e '  --csv-file # read in and evaluate the local csv file'
  e
end

#use_the_courses_from_this_curriculum(i = first_argument? ) ⇒ Object

#

use_the_courses_from_this_curriculum

To try and use a curriculum, try this:

pects bgenetik
#


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
277
278
279
280
# File 'lib/studium/utility_scripts/passed_ects_per_year/passed_ects_per_year.rb', line 245

def use_the_courses_from_this_curriculum(
    i = first_argument?
  )
  hash = {}
  hash.default = 0
  name_of_the_curriculum = i.to_s.delete('-')
  if name_of_the_curriculum.empty?
    name_of_the_curriculum = :bmvektor
  end
  array = return_lectures_of_this_curriculum(
            name_of_the_curriculum.to_sym
          )
  # ===================================================================== #
  # In this case we will substitute the entries. We will store onto
  # :hash.
  # ===================================================================== #
  clear_the_primary_hash
  array.each {|entry|
    unless @internal_hash[:dataset].has_key? entry
      opne tomato("No entry for ")+
           sfancy(entry)+
           tomato(' was found.')
    end
    pointer = @internal_hash[:dataset][entry]
    already_solved = pointer[:already_solved]
    if already_solved
      hash[entry] = pointer
    end
  }
  full_name_of_the_curriculum = olivedrab(
    Studium.name_of_this_curriculum(name_of_the_curriculum)
  )
  opne "Working on the curriculum #{full_name_of_the_curriculum} next:"
  display_the_yearly_amount_of_ECTS_passed_from_the_file_lecture_information(hash)
  exit
end