Class: Studium::Curricula::Modules::DisplayOnTheCommandline

Inherits:
Base
  • Object
show all
Defined in:
lib/studium/curricula/modules/display_on_the_commandline.rb

Overview

Studium::Curricula::Modules::DisplayOnTheCommandline

Constant Summary collapse

NAMESPACE =
#

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 Studium::Colours

Studium::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 Studium::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 = ARGV, run_already = true) ⇒ DisplayOnTheCommandline

#

initialize

#


42
43
44
45
46
47
48
49
50
51
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 42

def initialize(
    commandline_arguments = ARGV,
    run_already           = true
  )
  reset
  set_commandline_arguments(
    commandline_arguments
  )
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Studium::Curricula::Modules::DisplayOnTheCommandline[]

#


313
314
315
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 313

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

Instance Method Details

#determine_the_main_curriculum(_ = first_argument? ) ⇒ Object

#

determine_the_main_curriculum

#


122
123
124
125
126
127
128
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 122

def determine_the_main_curriculum(
    _ = first_argument?
  )
  if _
    set_we_seek_this_curriculum(_)
  end
end

#name_of_the_curriculum?Boolean

#

name_of_the_curriculum?

#

Returns:

  • (Boolean)


115
116
117
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 115

def name_of_the_curriculum?
  @we_seek_this_curriculum
end

#notify_the_user_what_will_be_doneObject

#

notify_the_user_what_will_be_done

#


133
134
135
136
137
138
139
140
141
142
143
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 133

def notify_the_user_what_will_be_done
  opnn { :no_trailing }
  e
  e
  _ = @we_seek_this_curriculum.dup
  e "Working on the curriculum "\
    "#{skyblue(@we_seek_this_curriculum)} next."
  e 'The file that was used, was: `'+sfile(
      return_file_associated_with_this_curriculum(_)
    )+'`'
end

#report(i = @hash_containing_all_modules) ⇒ Object

#

report

#


148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 148

def report(
    i = @hash_containing_all_modules
  )
  @lecture_entry_number = 0
  # ======================================================================= #
  # And display it as well.
  # ======================================================================= #
  e
  e
  i.each_pair {|individual_curriculum_module, inner_dataset|
    long_name_of_the_module = inner_dataset[:name_of_the_module]
    lectures_in_this_module = inner_dataset[:lectures]
    padded_module_number = "#{individual_curriculum_module}: ".ljust(5)
    n_ects_in_this_module = lectures_in_this_module.map {|key, hash|
      hash[:ects]
    }.sum
    depends_on_these_modules = inner_dataset[:this_module_depends_on_these_other_modules]
    _ = ''.dup
    depends_on_these_modules.each {|this_module|
      if this_module.include? 'None'
        _ << 'This module depends on no other module.'
      else
        _ << crimson('')
        _ << springgreen(this_module)
        _ << ' '
      end
    }
    # ===================================================================== #
    # Next strip on it:
    # ===================================================================== #
    _.strip!
    # ===================================================================== #
    # Display: "Module #nr"
    # ===================================================================== #
    colourized_n_ECTS_in_this_module = mediumorchid(
      "[#{n_ects_in_this_module} ECTS in Module "\
      "#{individual_curriculum_module}]"
    )
    e steelblue('-'*70)
    e palegoldenrod('Module ')+
      chocolate(padded_module_number)+
      "#{steelblue(long_name_of_the_module.strip.ljust(58))} "+
      colourized_n_ECTS_in_this_module
    e mediumturquoise('            Module '+
        long_name_of_the_module.to_s+' depends on: '+"\n"
      )+
      lightgreen(
        _.rjust(50)
      )
    e
    lectures_in_this_module.each_pair {|name_of_the_lecture, most_inner_dataset|
      n_ects = most_inner_dataset[:ects]
      @lecture_entry_number += 1 # Keep track of the lecture-number here.
      e '  '+
        olivedrab(
          (
            @lecture_entry_number.to_s+')'
          ).rjust(3)+' '
        )+
        royalblue(name_of_the_lecture.ljust(65))+
        slateblue(
          " [#{n_ects.to_s} ECTS]"
        )
    }
    e
  }
end

#report_how_many_ECTS_points_are_attributedObject

#

report_how_many_ECTS_points_are_attributed

#


219
220
221
222
223
224
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 219

def report_how_many_ECTS_points_are_attributed
  e 'This curriculum ('+steelblue(name_of_the_curriculum?)+
    ') has a total of '+royalblue(@total_n_ects_points.to_s)+
    ' ECTS points.'
  e
end

#resetObject

#

reset (reset tag)

#


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 56

def reset
  super()
  # ======================================================================= #
  # === @namespace
  # ======================================================================= #
  @namespace = NAMESPACE
  # ======================================================================= #
  # === @we_seek_this_curriculum
  # ======================================================================= #
  @we_seek_this_curriculum = nil
  # ======================================================================= #
  # === @hash_containing_all_modules
  # ======================================================================= #
  @hash_containing_all_modules = {}
  # ======================================================================= #
  # === @total_n_ects_points
  # ======================================================================= #
  @total_n_ects_points = 0
end

#runObject

#

run (run tag)

#


229
230
231
232
233
234
235
236
237
238
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
277
278
279
280
281
282
283
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
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 229

def run
  determine_the_main_curriculum
  notify_the_user_what_will_be_done
  _ = return_dataset_from_this_curriculum(@we_seek_this_curriculum)
  if @we_seek_this_curriculum.include?('ummy') # <- Ignore "dummy" curricula.
    _.each_pair {|name_of_the_lecture, inner_hash|
      @total_n_ects_points += inner_hash[:ects]
      e "  #{steelblue(name_of_the_lecture)}"
    }
  else
    _.each_pair {|name_of_the_lecture, inner_hash|
      # =================================================================== #
      # The first variable may look like this:
      #
      #   "187.A99 Bachelorarbeit für Informatik und Wirtschaftsinformatik"
      #
      # =================================================================== #
      n_ects = inner_hash[:ects]
      if inner_hash.has_key?(:individual_curricula)
        # ================================================================= #
        # First, obtain all individual curricula:
        # ================================================================= #
        all_individual_curricula = inner_hash[:individual_curricula]
        # ================================================================= #
        # Obtain the correct selection next:
        # ================================================================= #
        selection_of_the_correct_curriculum = all_individual_curricula.select {|key, value|
          name_of_the_curriculum = key[:name_of_the_curriculum].strip
          name_of_the_curriculum.include? @we_seek_this_curriculum.tr('_',' ')
        }
        if selection_of_the_correct_curriculum.is_a? Array
          selection_of_the_correct_curriculum = selection_of_the_correct_curriculum.first
        end
        # ================================================================= #
        # And rewrite that entry:
        # ================================================================= #
        inner_hash[:individual_curricula] = selection_of_the_correct_curriculum
        @total_n_ects_points += n_ects
        # ================================================================= #
        # Add some info if we have a nil-value.
        # ================================================================= #
        if selection_of_the_correct_curriculum.nil?
          e 'Some problem: no proper entry for the course '+
            steelblue(name_of_the_lecture)
          e lightgreen('Displaying more information about this problem next.')
          e 'The curriculum was:'
          e steelblue("  #{@we_seek_this_curriculum}")
        end
        # ================================================================= #
        # Obtain the correct selection.
        # ================================================================= #
        individual_curriculum_module_name       = selection_of_the_correct_curriculum[:name_of_the_curriculum_module].strip #.tr('-','_')
        individual_curriculum_module_depends_on = selection_of_the_correct_curriculum[:individual_curriculum_depends_on_these_modules]
        individual_curriculum_module            = selection_of_the_correct_curriculum[:individual_curriculum_module]
        # ================================================================= #
        # Obtain the first entry of the Array next:
        # ================================================================= #
        first = individual_curriculum_module.flatten.first
        if individual_curriculum_module.is_a? Array
          individual_curriculum_module = individual_curriculum_module.first
        end
        unless @hash_containing_all_modules.has_key? first
          @hash_containing_all_modules[first] = {}
        end
        @hash_containing_all_modules[first][:name_of_the_module] = individual_curriculum_module_name
        # ================================================================= #
        # Add the lecture to our big hash next:
        # ================================================================= #
        unless @hash_containing_all_modules[first].has_key? :lectures
          @hash_containing_all_modules[first][:lectures] = {}
        end
        @hash_containing_all_modules[first][:lectures][name_of_the_lecture] = inner_hash
        @hash_containing_all_modules[first][:this_module_depends_on_these_other_modules] =
          individual_curriculum_module_depends_on
      end
    }
    report(@hash_containing_all_modules)
  end
  report_how_many_ECTS_points_are_attributed
end

#set_we_seek_this_curriculum(i) ⇒ Object Also known as: set_seek_this_curriculum

#

set_we_seek_this_curriculum

We need to treat the individual curricula in a special way here, because they are not defined in the yaml file 'curricula.yml'.

#


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
# File 'lib/studium/curricula/modules/display_on_the_commandline.rb', line 82

def set_we_seek_this_curriculum(i)
  i = i.first if i.is_a? Array
  case i # case tag, main tag
  # ======================================================================= #
  # === :indi2
  # ======================================================================= #
  when :indi2
    i = return_title_from_this_curriculum_file(:indi2)
  # ======================================================================= #
  # === :indi4
  # ======================================================================= #
  when :indi4,
       :default
    i = return_title_from_this_curriculum_file(:indi4)
  # ======================================================================= #
  # === :indi1
  # ======================================================================= #
  when :indi1
    i = 'Bachelorcurriculum Vector-based strategies in Life Sciences, (Bio)Informatics, Molecular Medicine and Biotechnology'
  # ======================================================================= #
  # === :indi3
  # ======================================================================= #
  when :indi3
    i = 'Bachelorcurriculum Informatik und molekulare Biologie'
  else
    i = return_name_of_this_curriculum(i)
  end
  @we_seek_this_curriculum = i.strip
end