Class: Studium::ForeignLanguagePercentage

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

Overview

Studium::ForeignLanguagePercentage

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect
FILE_BACHELOR =
#

FILE_BACHELOR

This refers to the default bachelor-curriculum.

#
FILE_BACHELOR_VEKTORX
FILE_MASTER =
#

FILE_MASTER

#
FILE_MASTER_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_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(i = nil, run_already = true) ⇒ ForeignLanguagePercentage

#

initialize

#


16
17
18
19
20
21
22
23
# File 'lib/studium/utility_scripts/foreign_language_percentage/initialize.rb', line 16

def initialize(
    i           = nil,
    run_already = true
  )
  reset
  set_input(i)
  run if run_already
end

Class Method Details

.[](i = '') ⇒ Object

#

Studium::ForeignLanguagePercentage[]

#


134
135
136
# File 'lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb', line 134

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

Instance Method Details

#bachelor_dataset?Boolean Also known as: bachelor_file?

#

bachelor_dataset?

#

Returns:

  • (Boolean)


81
82
83
# File 'lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb', line 81

def bachelor_dataset?
  @file_bachelor
end

#input?Boolean

#

input?

#

Returns:

  • (Boolean)


64
65
66
# File 'lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb', line 64

def input?
  @input
end

#iterate_over_the_main_datasetObject

#

iterate_over_the_main_dataset

#


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

def iterate_over_the_main_dataset
  @result = []
  # ======================================================================= #
  # We require that @use_this_dataset has been properly populated before
  # this method is invoked.
  # @use_this_dataset is a Hash.
  # ======================================================================= #
  @use_this_dataset.each {|this_lecture_name, inner_dataset|
    this_language_is_used = inner_dataset[:language]
    n_ects_points         = inner_dataset[:ects]
    this_university       = obtain(:university, inner_dataset)
    if this_language_is_used.nil?
      report_that_no_language_information_is_registered_for_this_lecture(
        this_lecture_name
      )
    else
      # =================================================================== #
      # We will build up an Array that will hold 4 datapoints:
      #
      #   (1) the name of the lecture
      #   (2) the language that is used for that lecture
      #   (3) the amount of ECTS points therein.
      #   (4) the university where this lecture is taught
      #
      # =================================================================== #
      @result << [
        this_lecture_name,
        this_language_is_used,
        n_ects_points,
        this_university
      ]
    end
  }
  report
end

#lecture_names?Boolean Also known as: dataset2

#

lecture_names?

#

Returns:

  • (Boolean)


48
49
50
# File 'lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb', line 48

def lecture_names?
  @dataset_holding_all_master_lectures
end

#main_hash?Boolean Also known as: dataset1

#

main_hash?

#

Returns:

  • (Boolean)


41
42
43
# File 'lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb', line 41

def main_hash?
  @dataset_lecture_information
end

#master_dataset?Boolean Also known as: master_file?

#

master_dataset?

#

Returns:

  • (Boolean)


34
35
36
# File 'lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb', line 34

def master_dataset?
  FILE_MASTER
end
#

menu (menu tag)

The menu() interface is important as we may wish to select between bachelor and master curricula.

#


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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
133
134
135
136
137
138
139
# File 'lib/studium/utility_scripts/foreign_language_percentage/menu.rb', line 17

def menu(
    i = @input
  )
  case i.to_s # case tag
  # ======================================================================= #
  # === foreignanteil --indi3
  # ======================================================================= #
  when /^-?-?indi3$/i
    set_title 'Bachelorcurriculum Informatik und molekulare Biologie (TU Wien)'
    @use_this_dataset = convert_this_array_of_lectures_into_the_full_dataset( 
      obtain_lectures_from_this_curriculum(:indi3)
    )
  # ======================================================================= #
  # === foreignanteil --bvek
  # ======================================================================= #
  when /^-?-?bvektor$/i,
       /^-?-?bvector$/i,
       /^-?-?bvek$/i,
       /^-?-?bvec$/i
    set_title return_title_of(:bvector)+
              '(University of Vienna)'
    @use_this_dataset = convert_this_array_of_lectures_into_the_full_dataset( 
      obtain_lectures_from_this_curriculum(:bvector)
    )
  # ======================================================================= #
  # === fremdsprachen --all-bachelor-lectures
  # ======================================================================= #
  when /^-?-?all(-|_)?bachelor(-|_)?lectures$/
    @use_this_dataset = return_all_bachelor_lectures.select {|name_of_the_course, inner_hash|
      inner_hash[:language] == 'english'
    }
    index = 0
    e
    @use_this_dataset.each_pair {|a, inner_hash| index += 1
      n_ects = inner_hash[:ects].to_s
      e '  '+
        royalblue(
          (index.to_s+') ').rjust(4)
        )+
        steelblue(
          a.ljust(80)
        )+
        ' '+
        mediumpurple(
          n_ects.rjust(5)+' ECTS'
        )
    }
    e
    exit
  # ======================================================================= #
  # === fremdsprachen --help
  #
  # This entry point can be used to display the help-section of this
  # class.
  # ======================================================================= #
  when /^-?-?help$/i
    show_help
    exit
  # ======================================================================= #
  # === fremdsprachen --bachelor
  # ======================================================================= #
  when /^-?-?bachelor$/,
       '1'
    @use_this_dataset = @dataset_holding_all_bachelor_lectures
  # ======================================================================= #
  # === foreignanteil --mvektor
  # ======================================================================= #
  when /^-?-?mvektor$/i,
       /^-?-?mvector$/i
    set_title return_title_of(:mvector)+
              '(University of Vienna)'
    @use_this_dataset = convert_this_array_of_lectures_into_the_full_dataset( 
      obtain_lectures_from_this_curriculum(:mvector)
    )
  # ======================================================================= #
  # === foreignanteil --indi2
  # ======================================================================= #
  when /^-?-?indi2$/i
    set_title 'Bachelorcurriculum (Bio)Informatik und molekulare Biotechnologie, '\
              'unter Berücksichtigung medizinisch-immunologischer Aspekte (BOKU)'
    @use_this_dataset = convert_this_array_of_lectures_into_the_full_dataset( 
      obtain_lectures_from_this_curriculum(:indi2)
    )
  # ======================================================================= #
  # === foreignanteil --bachelor-lbt
  # ======================================================================= #
  when /^-?-?bachelor(_|-)?lbt$/i
    set_title 'Bachelorcurriculum LBT'
    @use_this_dataset = convert_this_array_of_lectures_into_the_full_dataset( 
      obtain_lectures_from_this_curriculum(:bachelor_lbt)
    )
  # ======================================================================= #
  # === foreignanteil --indi4
  # ======================================================================= #
  when /^-?-?indi4$/i,
       /^-?-?top$/i
    set_title(
      'Mastercurriculum (Bio)Informatics and molecular biotechnology including aspects from molecular medicine'
    )
    @use_this_dataset = convert_this_array_of_lectures_into_the_full_dataset( 
      obtain_lectures_from_this_curriculum(:indi4)
    )
  # ======================================================================= #
  # === foreignanteil --bachelor-lmbt
  # ======================================================================= #
  when /^-?-?bachelor(_|-)?lmbt$/i
    @use_this_dataset = convert_this_array_of_lectures_into_the_full_dataset( 
      obtain_lectures_from_this_curriculum(:bachelor_lmbt)
    )
  # ======================================================================= #
  # === fremdsprachen --master
  # ======================================================================= #
  when /^-?-?master$/,
       '2'
    @use_this_dataset = @dataset_holding_all_master_lectures
  else
    # ===================================================================== #
    # This is the default. We will assign to the vectorx-master
    # dataset by default.
    # ===================================================================== #
    @use_this_dataset = @dataset_holding_all_master_lectures
  end
end

#report(i = @result) ⇒ Object

#

report

#


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
# File 'lib/studium/utility_scripts/foreign_language_percentage/report.rb', line 21

def report(
    i = @result
  )
  if i.is_a? Array
    # ===================================================================== #
    # Filter this Array then.
    # ===================================================================== #
    i.select! {|array|
      array[1] == 'english' # Pick only english languages here.
    }
  end
  total_ects_points = 0
  e
  report_the_title_of_this_curriculum
  e rev+'Reporting how many ('+orange(i.size.to_s)+
       ') lectures are given in the english language next:'
  e
  i.each_with_index {|array, index| index += 1
    name_of_the_lecture = array.first
    n_ects_points = array[2]
    university = array.last
    total_ects_points += n_ects_points
    n_spacers = '.' * (95 - (name_of_the_lecture.size))
    expanded_index = ("(#{index})").rjust(4)
    padded_index = "  #{expanded_index} "
    colourized_index = seagreen(padded_index)
    colourized_name_of_the_lecture = slategray(name_of_the_lecture)
    colourized_university = slateblue(university.center(10))
    # ===================================================================== #
    # Next report our result:
    # ===================================================================== #
    e "#{colourized_index}"\
      "#{colourized_name_of_the_lecture} #{n_spacers} "\
      "#{sfancy(n_ects_points.to_s.rjust(4)+' ECTS')} "\
      "#{colourized_university}"
  }
  e
  e "Total ECTS points in the english language: "\
    "#{sfancy(total_ects_points)}"
end

#report_that_no_language_information_is_registered_for_this_lecture(this_lecture_name) ⇒ Object

#

report_that_no_language_information_is_registered_for_this_lecture

#


71
72
73
74
75
76
# File 'lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb', line 71

def report_that_no_language_information_is_registered_for_this_lecture(this_lecture_name)
  opnn; e 'No language information for '+
          sfancy(this_lecture_name)+' registered.'
  opnn; e "The file in question is: "\
          "#{sfile(FILE_LECTURE_INFORMATION)}"
end

#report_the_title_of_this_curriculumObject

#

report_the_title_of_this_curriculum

#


14
15
16
# File 'lib/studium/utility_scripts/foreign_language_percentage/report.rb', line 14

def report_the_title_of_this_curriculum
  e steelblue("Title: #{@name_of_the_curriculum}")+N+N
end

#resetObject

#

reset (reset 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
# File 'lib/studium/utility_scripts/foreign_language_percentage/reset.rb', line 14

def reset
  super()
  # ======================================================================= #
  # === @namespace
  # ======================================================================= #
  @namespace = NAMESPACE
  # ======================================================================= #
  # === @name_of_the_curriculum
  #
  # This variable contains the name of the curriculum at hand.
  # ======================================================================= #
  @name_of_the_curriculum = nil
  # ======================================================================= #
  # === @dataset_lecture_information
  # ======================================================================= #
  @dataset_lecture_information = return_dataset_from_the_file_lecture_information
  # ======================================================================= #
  # === @use_this_dataset
  #
  # This variable will contain the lectures that belong to that
  # particular curriculum.
  # ======================================================================= #
  @use_this_dataset = nil
  # ======================================================================= #
  # === @file_bachelor
  # ======================================================================= #
  @file_bachelor = nil
  # ======================================================================= #
  # === @dataset_holding_all_bachelor_lectures
  #
  # Next, obtain the dataset that holds all of our master lectures.
  # ======================================================================= #
  @dataset_holding_all_bachelor_lectures = nil
  # ======================================================================= #
  # === @dataset_holding_all_master_lectures
  # ======================================================================= #
  @dataset_holding_all_master_lectures = nil
end

#runObject

#

run (run tag)

#


14
15
16
17
# File 'lib/studium/utility_scripts/foreign_language_percentage/run.rb', line 14

def run
  menu
  iterate_over_the_main_dataset
end

#set_input(i = '') ⇒ Object

#

set_input

#


55
56
57
58
59
# File 'lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb', line 55

def set_input(i = '')
  i = i.join(' ').strip if i.is_a? Array
  i = i.to_s.dup
  @input = i
end

#set_title(i) ⇒ Object

#

set_title

#


88
89
90
# File 'lib/studium/utility_scripts/foreign_language_percentage/foreign_language_percentage.rb', line 88

def set_title(i)
  @name_of_the_curriculum = i.to_s
end

#show_helpObject

#

show_help

#


14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/studium/utility_scripts/foreign_language_percentage/help.rb', line 14

def show_help
  e
  e "#{rev}The following options are presently available:"
  e
  e steelblue('  --mvektor')
  e steelblue('    ^^^ for the individual master vector at the University of Vienna')
  e steelblue('  --bachelor')
  e steelblue('    --indi3 # Individual curriculum at the TU Vienna')
  e cadetblue('  --master')
  e cadetblue('    --indi4 # Individual curriculum at the BOKU')
  e cadetblue('  --all-bachelor-lectures')
  e cadetblue('    ^^^ this will simply show all courses offered in english, in Bachelor-curricula')
  e
end