Class: Studium::ShowDescriptionsOfLecturesBelongingToThisModule

Inherits:
Base
  • Object
show all
Defined in:
lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/run.rb,
lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/menu.rb,
lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/reset.rb,
lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/constants.rb,
lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/show_descriptions_of_lectures_belonging_to_this_module.rb

Overview

Studium::ShowDescriptionsOfLecturesBelongingToThisModule.new

Constant Summary collapse

USE_THIS_CURRICULUM_BY_DEFAULT =
#

USE_THIS_CURRICULUM_BY_DEFAULT

Here we can toggle the default curriculum that is to be used.

#
:indi3

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?, #dataset?, #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) ⇒ ShowDescriptionsOfLecturesBelongingToThisModule

#

initialize

#


31
32
33
34
35
36
37
38
39
40
# File 'lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/show_descriptions_of_lectures_belonging_to_this_module.rb', line 31

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

#

ShowDescriptionsOfLecturesBelongingToThisModule[]

#


137
138
139
# File 'lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/show_descriptions_of_lectures_belonging_to_this_module.rb', line 137

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

Instance Method Details

#clear_old_datasetObject

#

clear_old_dataset

#


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

def clear_old_dataset
  @dataset = []
end

#determine_the_dataset_that_is_to_be_used(i = @use_this_curriculum) ⇒ Object

#

determine_the_dataset_that_is_to_be_used

#


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

def determine_the_dataset_that_is_to_be_used(
    i = @use_this_curriculum
  )
  # ======================================================================= #
  # === @dataset
  #
  # Next return the default dataset that we shall use.
  # ======================================================================= #
  @dataset = return_dataset_from_this_curriculum(i)
end
#

menu (menu tag)

#


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/menu.rb', line 14

def menu(
    i = commandline_arguments?
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i # case tag
    # ===================================================================== #
    # === show_descriptions_of_lectures_belong_to_this_module --indi2
    #
    # Alternatively, try this:
    #
    #   show_descriptions_of_lectures_belong_to_this_module --indi2 --module1
    #   show_descriptions_of_lectures_belong_to_this_module --indi3 --module16
    #
    # ===================================================================== #
    when /^-?-?indi2$/i,
         /^-?-?indi3$/i,
         /^-?-?indi4$/i
      clear_old_dataset
      target = i.to_s.delete('-').to_sym
      determine_the_dataset_that_is_to_be_used(
        target
      )
    # ===================================================================== #
    # === show_descriptions_of_lectures_belong_to_this_module --module1
    #
    # Invocation example:
    #
    #   show_descriptions_of_lectures_belong_to_this_module --module2
    #   studiummodules --module5
    #   studiummodules --15
    #
    # ===================================================================== #
    when /^-?-?module(\d{1,2})$/i,
         /^-?-?(\d{1,2})$/i
      match = $1.to_s.dup
      set_use_this_module(match)
    # ===================================================================== #
    # === show_descriptions_of_lectures_belong_to_this_module
    # ===================================================================== #
    when /^-?-?help$/i
      e
      e 'Not yet implemented.'
      e
    end
  end
end

#report(i) ⇒ Object

#

report (report tag)

#


82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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
# File 'lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/show_descriptions_of_lectures_belonging_to_this_module.rb', line 82

def report(i)
  if i.empty?
    opne 'No lectures were found.'
  else
    index = 0
    i.each {|lecture_id_and_lecture_name, hash| index += 1
      description_in_english = hash[:description_in_english]
      description_in_german  = hash[:description_in_german]
      case @use_this_language # case tag
      # =================================================================== #
      # === :english
      # =================================================================== #
      when :english
        use_this_description = description_in_english
      # =================================================================== #
      # === :german
      # =================================================================== #
      when :german
        use_this_description = description_in_german
      end
      e
      e royalblue("#{index}) ")+
        slateblue(lecture_id_and_lecture_name)
      e # Tiny spacer.
      # =================================================================== #
      # Next, we must show the proper description - either in german or
      # in english. However had, some lectures may lack such a
      # description. If this is the case it will be reported as well;
      # that way the user can correct this issue.
      # =================================================================== #
      e olivedrab("  #{use_this_description.to_s}")
      if use_this_description.nil?
        n_ljust = 54
        result = ' This course does not have an '+
                 @use_this_language.to_s+' description yet.'.ljust(n_ljust).dup
        if Object.const_defined?(:Roebe) and Roebe.respond_to? :warning_sign
          result.prepend("  #{::Roebe.warning_sign}")
          result << " #{::Roebe.warning_sign}"
        end
        e crimson(result)
        result = ' Consider adding one.'.ljust(n_ljust).dup
        if Object.const_defined?(:Roebe) and Roebe.respond_to? :warning_sign
          result.prepend("  #{::Roebe.warning_sign}")
          result << " #{::Roebe.warning_sign}"
        end
        e crimson(result)
        e
      end
    }
  end
end

#resetObject

#

reset (reset tag)

#


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/reset.rb', line 14

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @use_this_curriculum
  # ======================================================================= #
  @use_this_curriculum = USE_THIS_CURRICULUM_BY_DEFAULT
  # ======================================================================= #
  # === @use_this_language
  #
  # This variable can be either :english or :german. Right now it is
  # hardcoded and has to be modified by the user; at a later time this
  # may be changed to a more dynamic approach.
  # ======================================================================= #
  @use_this_language = :german
  set_use_this_module
  determine_the_dataset_that_is_to_be_used
end

#runObject

#

run (run tag)

#


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/run.rb', line 14

def run
  menu # Pass it through the menu first.
  @long_name_of_the_curriculum = return_long_name_of_this_curriculum(@use_this_curriculum)
  e 'Working on the curriculum called '+
    steelblue(@long_name_of_the_curriculum)+
    ' next.'
  we_are_interested_in_these_lectures = @dataset.select {|lecture_id_and_lecture_name, hash|
    we_seek_this_module = "M#{@use_this_module}"
    #e 'Seeking module: '+steelblue(we_seek_this_module)
    all_individual_curricula = hash[:individual_curricula]
    # ===================================================================== #
    # Next obtain the proper curricula entry:
    # ===================================================================== #
    if all_individual_curricula
      selection = all_individual_curricula.select {|hash|
        hash[:name_of_the_curriculum].include? @long_name_of_the_curriculum
      }
      if selection
        selection = selection.first
        individual_curriculum_module = selection[:individual_curriculum_module]
        if individual_curriculum_module.is_a? Array
          individual_curriculum_module = individual_curriculum_module.first
        end
        individual_curriculum_module.include? we_seek_this_module
      else
        e 'No entry found for '+tomato(@long_name_of_the_curriculum)+
          ' and module '+tomato(we_seek_this_module)+'.'
      end
    else
      e 'No individual curricula found in this hash:'
      pp hash
    end
  }
  report(we_are_interested_in_these_lectures)
end

#set_use_this_module(i = :default) ⇒ Object

#

set_use_this_module

#


45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/studium/utility_scripts/show_descriptions_of_lectures_belonging_to_this_module/show_descriptions_of_lectures_belonging_to_this_module.rb', line 45

def set_use_this_module(
    i = :default
  )
  case i
  # ======================================================================= #
  # === :default
  # ======================================================================= #
  when :default
    i = '1'
  end
  @use_this_module = i
end