Class: Roebe::ShowTenAliases

Inherits:
Base show all
Defined in:
lib/roebe/classes/show_ten_aliases.rb

Overview

Roebe::ShowTenAliases

Constant Summary collapse

N_LJUST_NAME_OF_THE_ENTRY =
#

N_LJUST_NAME_OF_THE_ENTRY

#
27
ARRAY_SHOW_THESE_RELEVANT_ALIASES =
#

ARRAY_SHOW_THESE_RELEVANT_ALIASES

Denote in this array how many aliases to display.

#
%w(
  1 2 3 4 5 6 7 8 9 10
)
DEFAULT_VALUE_FOR_IGNORE_EXISTING_AUTOGENERATED_YAML_FILE =
#

DEFAULT_VALUE_FOR_IGNORE_EXISTING_AUTOGENERATED_YAML_FILE

#
true

Constants inherited from Base

Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#actions, #append_this_onto_that_file, #append_what_into, #be_silent, #be_verbose?, #beautiful_url, #burlywood, #call_next, #chdir, #cheerful_guy, #cliner, #complex_esystem, #convert_global_env, #copy_directory, #copy_file, #cornflowerblue, #create_directory, #crimson, #current_month?, #current_time?, #current_year?, #cyan, #darkcyan, #darkgreen, #darkkhaki, #darkslateblue, #deeppink, #delete_symlink, #do_not_use_the_base_colours, #do_use_the_base_colours, #e, #ecomment, #editor_to_use?, #efancy, #eimp, #emphasis, #ensure_main_encoding, #ensure_utf_encoding, #eparse, #erev, #esteelblue, #etomato, #ewarn, #exit_program, #firebrick, #get_current_day, #get_current_month, #get_files_and_directories, #get_files_from, #get_german_name_for_this_weekday, #gold, #green, #grey, #hh_mm_ss, #hh_mm_ss_day_month_year, #home_dir?, #home_directory_of_user_x?, #infer_the_namespace, #internal_hash?, #is_a_directory?, #is_a_file?, #is_a_jpg_file?, #is_an_image_file?, #is_archive?, #is_audio_file?, #is_in_studium_dir?, #is_multimedia_file?, #is_on_roebe?, #is_on_windows?, #is_studium_available?, #is_symlink?, #is_this_a_ruby_file?, #is_video_file?, #iso_encoding?, #le, #left_colour, #lightblue, #lightgreen, #lightseagreen, #lightsteelblue, #lime, #limegreen, #localhost_to_data, #log_directory?, #main_encoding?, #mediumorchid, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mkdir_p, #mv, #n_days_in_this_month, #n_pages_in_this_pdf_file?, #namespace?, #no_file_exists_at, #ogrey, #olive, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #orev, #palegoldenrod, #palevioletred, #pink, #powderblue, #programs_dir?, #project_base_dir?, #random_html_colour, #rds, #read_file_in_iso_encoding, #read_file_via_the_default_encoding, #read_lines_via_iso_encoding, #readlines_with_main_encoding, #red, #register_sigint, #remove, #remove_directory, #remove_file, #rename_kde_konsole_tab, #replace_localhost_with_data, #report_pwd, #require_rescue, #reset_the_internal_hash, #return_all_directories_from_this_directory, #return_all_files_from_this_directory, #return_current_directory, #return_dd_mm_yyyy, #return_file_or_directory_of, #return_files_from_pwd, #return_last_part_of_the_current_directory, #return_utc, #rev, #right_arrow?, #right_colour, #roebe_log_directory?, #rosybrown, #royalblue, #ruby_base_directory?, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #show_help, #silent_redirection?, #simp, #simple_esystem, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #string_italic, #swarn, #symlink, #teal, #temp_dir?, #to_camelcase, #to_counted_hash, #tomato, #touch, #try_to_require_the_beautiful_url_gem, #try_to_require_the_html_template, #try_to_require_the_open_gem, #try_to_require_the_program_information_gem, #try_to_require_the_xorg_buffer, #use_colours?, #verbose_truth, #weekday?, #word_wrap, #write_what_into, #yellow

Methods included from Base::CommandlineArguments

#append_onto_the_commandline_arguments, #clear_commandline_arguments, #commandline_arguments?, #commandline_arguments_as_string?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_argument_without_leading_hyphens?, #has_an_argument_been_passed?, #remove_hyphened_arguments_from_the_commandline_arguments, #return_commandline_arguments_with_leading_hyphens, #second_argument?, #set_commandline_arguments

Constructor Details

#initialize(i = ARGV, run_already = true) ⇒ ShowTenAliases

#

initialize

#


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
# File 'lib/roebe/classes/show_ten_aliases.rb', line 61

def initialize(
    i           = ARGV,
    run_already = true
  )
  reset
  set_commandline_arguments(i)
  # ======================================================================= #
  # === Handle blocks given
  # ======================================================================= #
  if block_given?
    yielded = yield
    case yielded
    # ===================================================================== #
    # === :be_quiet
    # ===================================================================== #
    when :be_quiet
      set_be_quiet
    # ===================================================================== #
    # === :be_quiet_and_ignore_existing_file
    # ===================================================================== #
    when :be_quiet_and_ignore_existing_file
      set_be_quiet
      @ignore_existing_autogenerated_yaml_file = true
    end
  end
  run if run_already
end

Class Method Details

.[](i = ARGV) ⇒ Object

#

Roebe::ShowTenAliases[]

#


399
400
401
# File 'lib/roebe/classes/show_ten_aliases.rb', line 399

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

Instance Method Details

#consider_saving_the_relevant_dataset_into_a_local_fileObject

#

consider_saving_the_relevant_dataset_into_a_local_file

This method will save our dataset into a local file, as dictated by the variable @file_ten_aliases.

#


365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
# File 'lib/roebe/classes/show_ten_aliases.rb', line 365

def consider_saving_the_relevant_dataset_into_a_local_file
  if is_on_roebe? and
     @save_the_dataset_into_a_local_file and
     !@store_this_dataset.empty?
    what = YAML.dump(@store_this_dataset)
    into = @file_ten_aliases
    if be_verbose?
      opne "Storing this information in the file"
      opne "#{sfile(into)} #{rev}as well."
    end 
    unless what.empty?
      if into.nil?
        e 'Can not store anything as the variable into is nil.'
      else
        basedir = File.dirname(into)
        mkdir(basedir) unless File.directory? basedir
        write_what_into(what, into)
      end
    end
  end
end

#dataset?Boolean

#

dataset?

#

Returns:

  • (Boolean)


160
161
162
# File 'lib/roebe/classes/show_ten_aliases.rb', line 160

def dataset?
  @dataset
end

#do_update_the_file_ten_aliases_ymlObject

#

do_update_the_file_ten_aliases_yml

#


224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
# File 'lib/roebe/classes/show_ten_aliases.rb', line 224

def do_update_the_file_ten_aliases_yml
  begin
    require 'studium/constants/constants.rb'
    _ = Studium.file_ten_aliases
    if File.exist? _
      # ================================================================= #
      # In this case we must update that yaml-file.
      # ================================================================= #
      opne "A file exists at #{sfile(_)}, belonging to the "\
           "#{tomato('Studium')} project."
      opne 'That file will now be updated.'
      Roebe::ShowTenAliases.new(nil) { :be_quiet }
    end
  rescue LoadError
  end
end

#main_array?Boolean

#

main_array?

#

Returns:

  • (Boolean)


146
147
148
# File 'lib/roebe/classes/show_ten_aliases.rb', line 146

def main_array?
  @main_array
end
#

menu (menu tag)

#


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
# File 'lib/roebe/classes/show_ten_aliases.rb', line 167

def menu(
    i = commandline_arguments?
  )
  if i.is_a? Array
    i.each {|entry| menu(entry) }
  else
    case i # case tag
    # ===================================================================== #
    # === ten --randomly-rearrange
    # === ten --random
    # ===================================================================== #
    when /^-?-?randomly(-|_)?rearrange$/i,
         /^-?-?random$/i
      randomly_rearrange_the_aliases
      exit
    # ===================================================================== #
    # === ten 15
    # ===================================================================== #
    when /^\d{1,2}$/i
      min = 1
      max = i.to_i
      @main_array = (min .. max).to_a
    end
  end
end

#randomly_rearrange_the_aliases(n_times = 10) ⇒ Object

#

randomly_rearrange_the_aliases

#


196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
# File 'lib/roebe/classes/show_ten_aliases.rb', line 196

def randomly_rearrange_the_aliases(
    n_times = 10
  )
  require 'studium/toplevel_methods/toplevel_methods.rb'
  require 'roebe/classes/set_normal_alias_to.rb'
  require 'studium'
  array = Studium.available_topics_as_short_names
  array = Studium.remove_exam_topics_that_were_already_answered(array)
  new_array = []
  n_times.times {
    array.shuffle!
    new_array << array.pop
  }
  # ======================================================================= #
  # Now that we have the proper array, we simply call Roebe.set_alias_NUMBER.
  # ======================================================================= #
  new_array.each_with_index {|inner_entry, inner_counter| inner_counter += 1
    ::Roebe.set_alias(inner_counter, inner_entry)
  }
  # ======================================================================= #
  # The next code will update the FILE_TEN_ALIASES_YML constant.
  # ======================================================================= #
  do_update_the_file_ten_aliases_yml if is_on_roebe?
end

#reportObject

#

report (report tag)

#


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
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
# File 'lib/roebe/classes/show_ten_aliases.rb', line 244

def report
  begin
    require 'studium/toplevel_methods/toplevel_methods.rb'
  rescue LoadError
    e 'The file '\
      'studium/toplevel_methods/toplevel_methods.rb '\
      'is unavailable'
  end
  main_array = main_array?
  set_dataset(
    Roebe.return_n_aliases { main_array.size }
  )
  @store_this_dataset = {}
  e
  mini_dataset = nil
  if @file_ten_aliases and
     File.exist?(@file_ten_aliases) and
    !File.empty?(@file_ten_aliases) and
    !@ignore_existing_autogenerated_yaml_file
    if is_on_roebe?
      if be_verbose?
        e "Loading from the already existing "\
          "yaml-file `#{sfile(@file_ten_aliases)}`."
        e
      end
    end
    mini_dataset = YAML.load_file(@file_ten_aliases)
    # ===================================================================== #
    # In this case we will not save the dataset since it is old data,
    # not new data.
    # ===================================================================== #
    @save_the_dataset_into_a_local_file = false
  end
  right_arrow = right_arrow?
  # ======================================================================= #
  # Iterate over the specified keys next, while expanding the padding
  # value if the key is higher than the default:
  # ======================================================================= #
  use_this_as_ljust_value = @n_ljust_name_of_the_entry
  highest_value = 0
  dataset?.each {|key, value|
    if value.size > highest_value
      highest_value = value.size
    end
  }
  if highest_value > use_this_as_ljust_value
    use_this_as_ljust_value = highest_value
  end
  dataset?.each_pair {|number, exam_topic|
    if main_array.include? number
      # =================================================================== #
      # Build up the resulting String for display to the user. This will
      # use the default ljust-value.
      # =================================================================== #
      result = "  #{lightblue(number.to_s.rjust(2))}"\
               " #{slategray(right_arrow)} "\
               "#{slateblue(exam_topic.to_s.ljust(use_this_as_ljust_value))} ".dup
      if @show_n_percent_of_the_exam_questions_that_were_already_solved
        this_topic = exam_topic.to_s.delete('?')
        if mini_dataset
          n_percent = mini_dataset[number][1]
        elsif Studium.is_this_exam_topic_registered?(this_topic)
          n_percent = Studium.return_n_percent_solved_from_this_topic(
            this_topic
          )
        else
          n_percent = nil
        end
        if n_percent
          n_percent = '%.2f' % n_percent.to_f
          # =============================================================== #
          # Modify the result variable as well, in order to display the
          # percentage value of solved questions. 
          # =============================================================== #
          result << "#{darkcyan(n_percent.to_s.rjust(5)+'%')}"
          if @try_to_show_the_number_of_questions_answered
            n_answered  = ::Studium.n_questions_already_solved_in_this_topic(exam_topic)
            n_questions = ::Studium.n_questions_available_in_this_topic(exam_topic)
            @n_questions_answered_in_total += n_answered
            @n_questions_in_total += n_questions
            properly_padded_string = (
              "#{n_answered.to_s.rjust(4)} / #{n_questions.to_s.rjust(4)}"
            )
            splitted = properly_padded_string.split('/')
            splitted[0] = steelblue(splitted[0])+
                          steelblue('/')
            splitted[1] = royalblue(splitted[1])
            colourized_properly_padded_string = splitted.join
            result << steelblue(' (')+
                      colourized_properly_padded_string+
                      steelblue(')')
          end
          unless mini_dataset
            @store_this_dataset[number] = [exam_topic, n_percent.to_f]
          end
        end
      end
      e result if be_verbose?
    end
  }
  # ======================================================================= #
  # Next display a spacer on the bottom, with a summary
  # ======================================================================= #
  if be_verbose?
    e seagreen('  '+('-' * 53))
    left_padding_to_use_next = 44
    result = (' ' * left_padding_to_use_next)+
             steelblue(@n_questions_answered_in_total.to_s)+
             steelblue(' / ')+
             royalblue(@n_questions_in_total.to_s)
    e result
    e
  end
end

#resetObject

#

reset (reset tag)

#


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
140
141
# File 'lib/roebe/classes/show_ten_aliases.rb', line 92

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === :be_verbose
  # ======================================================================= #
  set_be_verbose
  # ======================================================================= #
  # === @ignore_existing_autogenerated_yaml_file
  # ======================================================================= #
  @ignore_existing_autogenerated_yaml_file =
    DEFAULT_VALUE_FOR_IGNORE_EXISTING_AUTOGENERATED_YAML_FILE
  # ======================================================================= #
  # === @show_n_percent_of_the_exam_questions_that_were_already_solved
  # ======================================================================= #
  @show_n_percent_of_the_exam_questions_that_were_already_solved = true
  # ======================================================================= #
  # === @n_ljust_name_of_the_entry
  # ======================================================================= #
  @n_ljust_name_of_the_entry = N_LJUST_NAME_OF_THE_ENTRY
  # ======================================================================= #
  # === @n_questions_in_total
  # ======================================================================= #
  @n_questions_in_total = 0
  # ======================================================================= #
  # === @n_questions_answered_in_total
  # ======================================================================= #
  @n_questions_answered_in_total = 0
  # ======================================================================= #
  # === @file_ten_aliases
  # ======================================================================= #
  @file_ten_aliases = nil
  # ======================================================================= #
  # === @try_to_show_the_number_of_questions_answered
  # ======================================================================= #
  @try_to_show_the_number_of_questions_answered = false
  if is_on_roebe?
    begin
      require 'studium/constants/constants.rb'
      require 'studium/toplevel_methods/toplevel_methods.rb'
      @file_ten_aliases = ::Studium.file_ten_aliases
      @try_to_show_the_number_of_questions_answered = true
    rescue LoadError; end
  end
  @save_the_dataset_into_a_local_file = true
  # ======================================================================= #
  # === @main_array
  # ======================================================================= #
  @main_array = ARRAY_SHOW_THESE_RELEVANT_ALIASES.map(&:to_i)
end

#runObject

#

run (run tag)

#


390
391
392
393
394
# File 'lib/roebe/classes/show_ten_aliases.rb', line 390

def run
  menu
  report
  consider_saving_the_relevant_dataset_into_a_local_file
end

#set_dataset(i = Roebe::ReturnTenAliases[]) ⇒ Object

#

set_dataset

#


153
154
155
# File 'lib/roebe/classes/show_ten_aliases.rb', line 153

def set_dataset(i = Roebe::ReturnTenAliases[])
  @dataset = i
end