Class: Studium::PassedEctsPerYear

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

Overview

Studium::PassedEctsPerYear

Constant Summary

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::NAMESPACE, 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_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 = nil, run_already = true) ⇒ PassedEctsPerYear

#

initialize

#


29
30
31
32
33
34
35
36
37
38
# File 'lib/studium/utility_scripts/passed_ects_per_year.rb', line 29

def initialize(
    commandline_arguments = nil,
    run_already           = true
  )
  set_commandline_arguments(
    commandline_arguments
  )
  determine_which_dataset_to_use
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Studium::PassedEctsPerYear[]

#


160
161
162
# File 'lib/studium/utility_scripts/passed_ects_per_year.rb', line 160

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

Instance Method Details

#all_lectures?Boolean

#

all_lectures?

#

Returns:

  • (Boolean)


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

def all_lectures?
  @dataset
end

#determine_which_dataset_to_useObject

#

determine_which_dataset_to_use

To try and use a curriculum, try this:

passed_ects_per_year bgenetik
#


60
61
62
63
64
65
66
67
68
69
# File 'lib/studium/utility_scripts/passed_ects_per_year.rb', line 60

def determine_which_dataset_to_use
  first_argument = @commandline_arguments.first.to_s.delete('-')
  if first_argument.empty?
    first_argument = :bmvektor
  end
  @dataset = return_lectures_of_this_curriculum(
    first_argument.to_sym
  )
  @dataset.flatten!
end

#filter_for_this_year(i) ⇒ Object

#

filter_for_this_year

This method will filter for lectures that were passed in the given year.

#


100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/studium/utility_scripts/passed_ects_per_year.rb', line 100

def filter_for_this_year(i)
  i = i.to_i # The year should be an integer.
  all_lectures?.select {|name_of_the_lecture|
    pointer = @dataset_from_the_file_lecture_information[name_of_the_lecture]
    if pointer.nil?
      e 'No registered lecture called `'+steelblue(name_of_the_lecture)+'`.'
      false
    else
      pointer.has_key?(:already_solved)  and
      (pointer[:already_solved] == true) and
      (pointer[:already_solved_at].to_s.split('.').last.to_i == i)
    end
  }
end

#reject_lectures_that_do_not_belong_to_this_curriculumObject

#

reject_lectures_that_do_not_belong_to_this_curriculum

#


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

def reject_lectures_that_do_not_belong_to_this_curriculum
  @dataset_from_the_file_lecture_information.reject! {|name_of_the_lecture, inner_dataset|
    !@dataset.include?(name_of_the_lecture)
  }
end

#resetObject

#

reset (reset tag)

#


43
44
45
46
47
48
49
50
# File 'lib/studium/utility_scripts/passed_ects_per_year.rb', line 43

def reset
  super()
  # ======================================================================= #
  # === @dataset_from_the_file_lecture_information
  # ======================================================================= #
  @dataset_from_the_file_lecture_information =
    return_dataset_from_the_file_lecture_information
end

#return_ects_points(this_lecture) ⇒ Object

#

return_ects_points

#


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

def return_ects_points(this_lecture)
  @dataset_from_the_file_lecture_information[this_lecture][:ects]
end

#runObject

#

run (run tag)

#


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
147
148
149
150
151
152
153
154
155
# File 'lib/studium/utility_scripts/passed_ects_per_year.rb', line 118

def run
  reset
  reject_lectures_that_do_not_belong_to_this_curriculum
  total_ects_passed = 0
  # ======================================================================= #
  # Iterate over the years:
  # ======================================================================= #
  (1998 .. Time.now.year).each {|this_year|
    total_ects_passed_in_that_year = 0
    hash_these_lectures_were_passed = {}
    these_lectures_were_passed_in_that_year = filter_for_this_year(this_year)
    unless these_lectures_were_passed_in_that_year.empty?
      these_lectures_were_passed_in_that_year.each {|this_lecture|
        n_ects_points = return_ects_points(this_lecture)
        total_ects_passed_in_that_year += n_ects_points
        total_ects_passed += n_ects_points
        hash_these_lectures_were_passed[this_lecture] = n_ects_points
      }
      # =================================================================== #
      # Next display our findings to the user:
      # =================================================================== #
      e slateblue(this_year.to_s+': ')+
        lightblue('('+total_ects_passed_in_that_year.to_s+' ECTS points passed)')
      hash_these_lectures_were_passed.each_pair {|this_lecture, n_ects_points|
        e '  '+royalblue(this_lecture.ljust(86))+' '+
          orange(
            n_ects_points.to_s.rjust(5)+' ECTS'
          )
      }
    end
  }
  if total_ects_passed > 0
    e
    e "A total of #{sfancy(total_ects_passed.to_s)}"\
      " ECTS points has been passed in total."
    e
  end
end