Class: Studium::NewStud

Inherits:
Base
  • Object
show all
Defined in:
lib/studium/utility_scripts/new_stud.rb

Overview

Studium::NewStud

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect
FILE_LOCATION_CD_ALIASES =
#

FILE_LOCATION_CD_ALIASES

#
FILE_CD_ALIASES
FIND_THIS_LINE =
#

Next come the ~16 keywords we can scan for.

#
'pwdstud1:'
FIND_THIS_SECONDARY_LINE =
'pwdstud2:'
FIND_THIS_TERTIARY_LINE =
'pwdstud3:'
FIND_THIS_QUATERNARY_LINE =
'pwdstud4:'
FIND_THIS_QUINTARY_LINE =
'pwdstud5:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_SIX =
'pwdstud6:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_SEVEN =
'pwdstud7:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_EIGHT =
'pwdstud8:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_NINE =
'pwdstud9:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TEN =
'pwdstud10:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_ELEVEN =
'pwdstud11:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWELVE =
'pwdstud12:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_THIRTEEN =
'pwdstud13:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_FOURTEEN =
'pwdstud14:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_FIFTEEN =
'pwdstud15:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_SIXTEEN =
'pwdstud16:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_SEVENTEEN =
'pwdstud17:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_EIGHTEEN =
'pwdstud18:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_NINETEEN =
'pwdstud19:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTY =
'pwdstud20:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYONE =
'pwdstud21:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYTWO =
'pwdstud22:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYTHREE =
'pwdstud23:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYFOUR =
'pwdstud24:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYFIVE =
'pwdstud25:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYSIX =
'pwdstud26:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYSEVEN =
'pwdstud27:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYEIGHT =
'pwdstud28:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYNINE =
'pwdstud29:'
FIND_THIS_LINE_FOR_ENTRY_NUMBER_THIRTY =
'pwdstud30:'

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(use_this_as_the_base_directory = Dir.pwd, run_already = true) ⇒ NewStud

#

initialize

#


75
76
77
78
79
80
81
82
83
84
# File 'lib/studium/utility_scripts/new_stud.rb', line 75

def initialize(
    use_this_as_the_base_directory = Dir.pwd,
    run_already                    = true
  )
  reset
  set_base_dir(
    use_this_as_the_base_directory
  ) # Defaults to the currently working directory.
  run if run_already
end

Class Method Details

.[](i = 'pwdstud1') ⇒ Object

#

Studium::NewStud[]

Simplified accessor towards secondary, tertiary and quaternary.

Pass in a number (or a String representing a number) to this method.

#


221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
# File 'lib/studium/utility_scripts/new_stud.rb', line 221

def self.[](i = 'pwdstud1')
  i = i.to_i
  _ = self.new(:default_directory, false) # Instantiate it here.
  case i
  when 1, 2
    _.set_entry :secondary
  when 3
    _.set_entry :tertiary
  when 4
    _.set_entry :quaternary
  when 5
    _.set_entry :quintary
  when 6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
       21,22,23,24,25
    _.set_entry(i)
  else
    opnn; e swarn('Not found entry `'+i.to_s+'`.')
  end
  _.run
end

.opnnObject

#

opnn

#


210
211
212
# File 'lib/studium/utility_scripts/new_stud.rb', line 210

def self.opnn
  Opn.opn(namespace: NAMESPACE)
end

Instance Method Details

#find_potential_matchObject

#

find_potential_match

#


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

def find_potential_match
  @data.each_with_index {|line, index|
    # ===================================================================== #
    # We scan for what value is stored in @find_this_line next.
    # ===================================================================== #
    if line.include? @find_this_line # Could be a match
      @array_all_matches << [line, index] if line[/^#{@find_this_line}/]
    end
  }
  # ======================================================================= #
  # For now, we pick only the first element.
  # ======================================================================= #
  match = @array_all_matches.first
  unless match.empty?
    splitted = match[0].split(':')
    # Next get the padding:
    padding = splitted[1][/\A */]
    # ===================================================================== #
    # Note that for the following line to work, the variable @base_dir
    # must have been properly set before.
    # ===================================================================== #
    splitted[1] = padding+'cd '+@base_dir+N # +'; pwd'+N # We no longer append .pwd
    new_line = splitted.join(':') # The modified line.
    @data[match[1]] = new_line
    @this_line_was_modified = new_line
    save_new_dataset
  else
    e 'We did not find any match.'
  end
end

#find_this_line?Boolean

#

find_this_line?

#

Returns:

  • (Boolean)


120
121
122
# File 'lib/studium/utility_scripts/new_stud.rb', line 120

def find_this_line?
  @find_this_line
end

#generate_rc_filesObject

#

generate_rc_files

#


311
312
313
314
315
316
317
318
# File 'lib/studium/utility_scripts/new_stud.rb', line 311

def generate_rc_files
  begin
    require 'generate_rc_file' unless Object.const_defined? :GenerateRcFile
  rescue LoadError; end
  unless @simulate_only
    GenerateRcFile.new(:cd_aliases) # We only need the cd_aliases, not the other aliases.
  end
end

#load_cd_aliasesObject

#

load_cd_aliases

#


127
128
129
130
131
132
133
134
135
136
137
# File 'lib/studium/utility_scripts/new_stud.rb', line 127

def load_cd_aliases
  _ = FILE_LOCATION_CD_ALIASES
  if File.exist? _
    # ===================================================================== #
    # @data will contain the content of the cd_aliases.yml file.
    # ===================================================================== #
    @data = File.readlines(_, encoding: ::Studium.main_encoding?)
  else
    ewarn "The file does not exist at `#{sfile(_)}`."
  end
end

#resetObject

#

reset

#


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

def reset
  super()
  # ======================================================================= #
  # === @namespace
  # ======================================================================= #
  @namespace = NAMESPACE
  # ======================================================================= #
  # === @array_all_matches
  # ======================================================================= #
  @array_all_matches = []
  # ======================================================================= #
  # === @simulate_only
  #
  # The next variable can be used to toggle simulation-mode. If the
  # variable @simulate_only is true, then no file-changes will be made.
  # ======================================================================= #
  @simulate_only = false
  # ======================================================================= #
  # === @this_line_was_modified
  #
  # The following instance variable will keep track which line was
  # modified.
  # ======================================================================= #
  @this_line_was_modified = nil
  set_find_this_line
  load_cd_aliases
end

#runObject

#

run (run tag)

#


323
324
325
326
# File 'lib/studium/utility_scripts/new_stud.rb', line 323

def run
  find_potential_match
  generate_rc_files # Generate a new cd_aliases.rc file here.
end

#save_new_dataset(what = @data) ⇒ Object

#

save_new_dataset

This method will save the complete dataset into the “cd_aliases.yml” file.

#


296
297
298
299
300
301
302
303
304
305
306
# File 'lib/studium/utility_scripts/new_stud.rb', line 296

def save_new_dataset(what = @data)
  into = FILE_LOCATION_CD_ALIASES
  opnn; e "Storing into `#{sfile(into)}`."
  opnn; e " (The dataset that was stored was:)"
  e
  e "    #{slateblue(@this_line_was_modified)})"
  e
  unless @simulate_only
    write_what_into(what, into)
  end
end

#set_base_dir(i = return_pwd) ⇒ Object

#

set_base_dir

Set the target directory that will become our new main directory.

#


247
248
249
250
251
252
253
254
# File 'lib/studium/utility_scripts/new_stud.rb', line 247

def set_base_dir(i = return_pwd)
  i = i.to_s.dup
  case i
  when 'default_directory','default',''
    i = return_pwd
  end
  @base_dir = i
end

#set_find_this_line(i = FIND_THIS_LINE) ⇒ Object Also known as: set_entry

#

set_find_this_line

The list goes like this:

primary, secondary, tertiary, quaternary, quinary,
senary, septenary, octonary, nonary, and denary.
#


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

def set_find_this_line(
    i = FIND_THIS_LINE
  )
  i = i.to_s # We require a String here.
  case i # case tag
  when 'secondary', '2'
    i = FIND_THIS_SECONDARY_LINE
  when 'tertiary', '3'
    i = FIND_THIS_TERTIARY_LINE
  when 'quaternary', '4'
    i = FIND_THIS_QUATERNARY_LINE
  when 'quintary', '5'
    i = FIND_THIS_QUINTARY_LINE
  when '6'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_SIX
  when '7'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_SEVEN
  when '8'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_EIGHT
  when '9'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_NINE
  when '10'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_TEN
  when '11'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_ELEVEN
  when '12'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWELVE
  when '13'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_THIRTEEN
  when '14'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_FOURTEEN
  when '15'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_FIFTEEN
  when '16'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_SIXTEEN
  when '17'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_SEVENTEEN
  when '18'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_EIGHTEEN
  when '19'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_NINETEEN
  when '20'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTY
  when '21'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYONE
  when '22'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYTWO
  when '23'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYTHREE
  when '24'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYFOUR
  when '25'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYFIVE
  when '26'
    i = FIND_THIS_LINE_FOR_ENTRY_NUMBER_TWENTYSIX
  end
  @find_this_line = i
end