Class: Studium::Exams::Cycle
- Inherits:
-
Base
- Object
- Base
- Studium::Exams::Cycle
show all
- Defined in:
- lib/studium/exams/cycle.rb
Overview
Constant Summary
collapse
- STORE_WHERE =
#
Cycle::STORE_WHERE
Where we store our results, that is, the last exam topic.
cat /root/Studium/last_exam_topic.md
#
"#{Studium.log_dir?}last_exam_topic.md"
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
-
.main_file? ⇒ Boolean
# === Studium::Exams::Cycle.main_file? ========================================================================= #.
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, #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
#commandline?, #runmode?, #set_commandline_mode, #set_runmode, #set_www_mode, #www_mode?
#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
#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(optional_commandline_argument = ARGV, run_already = true) ⇒ Cycle
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/studium/exams/cycle.rb', line 46
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?
#
Instance Method Details
#ask_the_question(use_this_topic = topic?
) ⇒ Object
230
231
232
233
234
|
# File 'lib/studium/exams/cycle.rb', line 230
def ask_the_question(
use_this_topic = topic?
)
::Studium::Exams::ExamQuestion.new(use_this_topic)
end
|
#check_commandline(i = @commandline) ⇒ Object
Also known as:
#
check_commandline (menu tag)
#
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
|
# File 'lib/studium/exams/cycle.rb', line 191
def check_commandline(
i = @commandline
)
case i when /report(_|-)?where(_|-)?the(_|-)?main(_|-)?yaml(_|-)?file(_|-)?is/
report_where_the_main_yaml_file_is
exit
when /help/
show_available_commandline_options
e
report_where_the_main_yaml_file_is
exit
when /-?-?size/
report_how_many_entries_are_available
exit
when /-?-?open/,'OPEN'
begin
require 'open'
rescue LoadError; end
open_in_editor(yaml_file?)
exit end
end
|
#data? ⇒ Boolean
Also known as:
data
130
131
132
|
# File 'lib/studium/exams/cycle.rb', line 130
def data?
@data
end
|
#debug? ⇒ Boolean
137
138
139
|
# File 'lib/studium/exams/cycle.rb', line 137
def debug?
false
end
|
#determine_which_topic_to_use ⇒ Object
#
determine_which_topic_to_use
We determine the ivar @last_topic_used here.
#
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/studium/exams/cycle.rb', line 97
def determine_which_topic_to_use
if File.exist? STORE_WHERE
@last_topic_used = File.read(STORE_WHERE).strip
else @last_topic_used = data?.first
end
if debug? e 'DEBUG: The last topic used was: '+sfancy(@last_topic_used)
end
end
|
#index? ⇒ Boolean
#
index?
Returns the index of the current topic.
#
116
117
118
|
# File 'lib/studium/exams/cycle.rb', line 116
def index?
data?.find_index(@last_topic_used)
end
|
#load_dataset ⇒ Object
#
load_dataset
The current exams will be stored in @data.
#
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/studium/exams/cycle.rb', line 74
def load_dataset
_ = yaml_file?
if File.exist? _
@data = File.readlines(_) @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_available ⇒ Object
#
report_how_many_entries_are_available
Tell the user how many different entries are available.
#
162
163
164
165
166
167
|
# File 'lib/studium/exams/cycle.rb', line 162
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_is ⇒ Object
#
report_where_the_main_yaml_file_is
#
184
185
186
|
# File 'lib/studium/exams/cycle.rb', line 184
def report_where_the_main_yaml_file_is
e 'The main yaml file is at: '+sfile(yaml_file?)
end
|
#report_which_entries_are_used ⇒ Object
#
report_which_entries_are_used
#
172
173
174
175
176
177
178
179
|
# File 'lib/studium/exams/cycle.rb', line 172
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
|
#reset ⇒ Object
60
61
62
63
64
65
66
67
|
# File 'lib/studium/exams/cycle.rb', line 60
def reset
super()
@debug = true
@last_topic_used = nil
end
|
#run ⇒ Object
272
273
274
275
276
277
278
|
# File 'lib/studium/exams/cycle.rb', line 272
def run
load_dataset
check_commandline
determine_which_topic_to_use
ask_the_question
store_last_topic_asked
end
|
#show_available_commandline_options ⇒ Object
#
show_available_commandline_options (help tag)
Invoke this method like so:
cycle --help
#
147
148
149
150
151
152
153
154
155
|
# File 'lib/studium/exams/cycle.rb', line 147
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_asked(what = @last_topic_used, where = STORE_WHERE) ⇒ Object
#
store_last_topic_asked
#
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
|
# File 'lib/studium/exams/cycle.rb', line 249
def store_last_topic_asked(
what = @last_topic_used,
where = STORE_WHERE
)
index = index?
index = 0 if index.nil? index += 1
if (index+1) > data?.size
index = 0 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
88
89
90
|
# File 'lib/studium/exams/cycle.rb', line 88
def store_where?
STORE_WHERE
end
|
#topic? ⇒ Boolean
123
124
125
|
# File 'lib/studium/exams/cycle.rb', line 123
def topic?
@last_topic_used
end
|
#yaml_file? ⇒ Boolean
#
yaml_file?
This may point to a file such as “/home/x/programming/ruby/src/studium/lib/studium/yaml/current_exams.yml”
#