Class: Studium::Exams::Cycle

Inherits:
Base
  • Object
show all
Defined in:
lib/studium/exams/cycle.rb

Overview

Studium::Exams::Cycle

Constant Summary collapse

STORE_WHERE =
#

Cycle::STORE_WHERE

Where we store our results, that is, the last exam topic.

cat /Depot/Studium/last_exam_topic.md
#
"#{Studium.log_dir?}last_exam_topic.md"

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, #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(optional_commandline_argument = ARGV, run_already = true) ⇒ Cycle

#

initialize

#


43
44
45
46
47
48
49
50
51
52
# File 'lib/studium/exams/cycle.rb', line 43

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

Class Method Details

.main_file?Boolean

#

Studium::Exams::Cycle.main_file?

#

Returns:

  • (Boolean)


277
278
279
# File 'lib/studium/exams/cycle.rb', line 277

def self.main_file?
  Studium.file_current_exams
end

Instance Method Details

#ask_the_question(use_this_topic = topic? ) ⇒ Object

#

ask_the_question

#


247
248
249
250
251
# File 'lib/studium/exams/cycle.rb', line 247

def ask_the_question(
    use_this_topic = topic?
  )
  ::Studium::Exams::ExamQuestion.new(use_this_topic)
end

#check_commandline(i = @commandline) ⇒ Object Also known as: menu

#

check_commandline (menu tag)

#


208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
# File 'lib/studium/exams/cycle.rb', line 208

def check_commandline(
    i = @commandline
  )
  case i # case tag
  # ======================================================================= #
  # === report_where_the_main_yaml_file_is
  # ======================================================================= #
  when /report(_|-)?where(_|-)?the(_|-)?main(_|-)?yaml(_|-)?file(_|-)?is/
    report_where_the_main_yaml_file_is
    exit
  # ======================================================================= #
  # === cycle --help
  # ======================================================================= #
  when /help/
    show_available_commandline_options
    e
    report_where_the_main_yaml_file_is
    exit
  # ======================================================================= #
  # === cycle --size
  # ======================================================================= #
  when /-?-?size/
    report_how_many_entries_are_available
    exit
  # ======================================================================= #
  # === cycle --open
  # ======================================================================= #
  when /-?-?open/,'OPEN'
    begin
      require 'open'
    rescue LoadError; end
    open_in_editor(yaml_file?)
    exit # Exit after we have opened it.
  end
end

#data?Boolean Also known as: data

#

data

#

Returns:

  • (Boolean)


125
126
127
# File 'lib/studium/exams/cycle.rb', line 125

def data?
  @data
end

#debug?Boolean

#

debug?

#

Returns:

  • (Boolean)


154
155
156
# File 'lib/studium/exams/cycle.rb', line 154

def debug?
  false
end

#determine_which_topic_to_useObject

#

determine_which_topic_to_use

We determine the ivar @last_topic_used here.

#


92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/studium/exams/cycle.rb', line 92

def determine_which_topic_to_use
  # ======================================================================= #
  # If the File exists then we won't have to use .shuffle. 
  # ======================================================================= #
  if File.exist? STORE_WHERE
    @last_topic_used = File.read(STORE_WHERE).strip
  else # Else we grab the first entry and continue from there.
    @last_topic_used = data?.first
  end
  if debug? # Feedback more information if we are debugging this.
    e 'DEBUG: The last topic used was: '+sfancy(@last_topic_used)
  end
end

#index?Boolean

#

index?

Returns the index of the current topic.

#

Returns:

  • (Boolean)


111
112
113
# File 'lib/studium/exams/cycle.rb', line 111

def index?
  data?.find_index(@last_topic_used)
end

#load_datasetObject

#

load_dataset

The current exams will be stored in @data.

#


69
70
71
72
73
74
75
76
77
78
# File 'lib/studium/exams/cycle.rb', line 69

def load_dataset
  _ = yaml_file?
  if File.exist? _
    @data = File.readlines(_) # This defaults to: /home/x/STUDIUM/YAML/current_exams.yml
    @data.select! {|line| line.start_with? '-'}
    @data.map! {|entry| entry.chomp.delete('-').strip }
  else
    opnn; e 'No file exists at `'+sfile(_)+'`.'
  end 
end

#report_how_many_entries_are_availableObject

#

report_how_many_entries_are_available

Tell the user how many different entries are available.

#


179
180
181
182
183
184
# File 'lib/studium/exams/cycle.rb', line 179

def report_how_many_entries_are_available
  _ = yaml_file?
  n_entries = YAML.load_file(_).size.to_s
  e 'We currently use `'+simp(n_entries)+'` entries. (From file '+sfile(_)+')'
  report_which_entries_are_used
end

#report_where_the_main_yaml_file_isObject

#

report_where_the_main_yaml_file_is

#


201
202
203
# File 'lib/studium/exams/cycle.rb', line 201

def report_where_the_main_yaml_file_is
  e 'The main yaml file is at: '+sfile(yaml_file?)
end

#report_which_entries_are_usedObject

#

report_which_entries_are_used

#


189
190
191
192
193
194
195
196
# File 'lib/studium/exams/cycle.rb', line 189

def report_which_entries_are_used
  these_entries = YAML.load_file(yaml_file?)
  e
  e 'We will use the following entries:'
  e
  print '  '; e these_entries.join(', ').strip.chop
  e
end

#resetObject

#

reset

#


57
58
59
60
61
62
# File 'lib/studium/exams/cycle.rb', line 57

def reset
  super()
  # === @debug
  @debug = true
  @last_topic_used = nil
end

#runObject

#

run

#


266
267
268
269
270
271
272
# File 'lib/studium/exams/cycle.rb', line 266

def run
  load_dataset
  check_commandline
  determine_which_topic_to_use
  ask_the_question
  store_last_topic_asked
end

#show_available_commandline_optionsObject

#

show_available_commandline_options (help tag)

Invoke this method like so:

cycle --help
#


164
165
166
167
168
169
170
171
172
# File 'lib/studium/exams/cycle.rb', line 164

def show_available_commandline_options
  e
  e 'These commandline-options are available:'
  e
  e '  --open                               # To open the .yml file in your editor'
  e '  --size                               # Show how many entries are available'
  e '  --report_where_the_main_yaml_file_is # show where the main .yml file is'
  e
end

#store_last_topic_askedObject

#

store_last_topic_asked

#


132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/studium/exams/cycle.rb', line 132

def store_last_topic_asked
  where = STORE_WHERE
  what = @last_topic_used
  index = index?
  index = 0 if index.nil? # Safeguard.
  # ======================================================================= #
  # Now, we grab the next topic.
  # ======================================================================= #
  index += 1
  if (index+1) > data?.size
    index = 0 # Reset it in this case.
  end
  what = data?[index]
  if debug?
    e 'Next storing `'+what.to_s+'` into `'+sfile(store_where?)+'`.'
  end
  write_what_into(what, where)
end

#store_where?Boolean

#

store_where?

#

Returns:

  • (Boolean)


83
84
85
# File 'lib/studium/exams/cycle.rb', line 83

def store_where?
  STORE_WHERE
end

#topic?Boolean

#

topic?

#

Returns:

  • (Boolean)


118
119
120
# File 'lib/studium/exams/cycle.rb', line 118

def topic?
  @last_topic_used
end

#yaml_file?Boolean

#

yaml_file?

This may point to a file such as “/home/x/DATA/PROGRAMMING_LANGUAGES/RUBY/src/studium/lib/studium/yaml/current_exams.yml”

#

Returns:

  • (Boolean)


259
260
261
# File 'lib/studium/exams/cycle.rb', line 259

def yaml_file?
  ::Studium.file_current_exams
end