Class: Studium::StudiumSkeleton

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

Overview

Studium::StudiumSkeleton

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect
SPACER =
#

SPACER

#
'# =========================================================================== #'
ARRAY_GENERATE_THESE_FILES =
#

Studium::StudiumSkeleton::ARRAY_GENERATE_THESE_FILES

The files listed in the following Array will be auto-generated, unless they already exist.

#
%w(
  INHALT
  LINKS
  LITERATUR
  ORT
  PRÜFUNGSFRAGEN
  SLOGANS
  TERMINE
).map {|entry| entry+'.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::N_CHARACTERS_PER_LINE, Base::UNICODE_RIGHT_ARROW

Constants included from Colours

Colours::COLOURS

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) ⇒ StudiumSkeleton

#

initialize

#


53
54
55
56
57
58
59
60
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 53

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

Instance Method Details

#autogenerate_default_filesObject

#

autogenerate_default_files

As of May 2014, we will no longer generate a file if it already exists.

#


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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 87

def autogenerate_default_files
  ARRAY_GENERATE_THESE_FILES.each {|this_file|
    if File.exist? this_file
      warn_user_that_this_file_already_exists(this_file)
    else
      opnn; e 'Generating file '+sfile(this_file)+' next.'
      what = ''.dup
      # =================================================================== #
      # === Handle LINK entries next.
      # =================================================================== #
      if this_file.include?('LINK') and return_pwd.include?('UNI_WIEN')
        # If the file is called LINK, and we are in a subdirectory
        # for the Uni-Vienna, then we append a link.
        what << SPACER+N
        what << '# Offizieller Webauftritt'+N
        what << SPACER+N
        number = File.basename(Dir.pwd).split('_').first.to_s
        # x.scan(/\d+/).first
        # Need a trailing newline because a spacer may be added lateron. 
        what << 'https://online.univie.ac.at/vlvz?&lvnr='+number+'&semester=S2020'+N
      end
      write_what_into(what, this_file) # Must come before opening the file in the editor.
      case this_file # case tag
      # =================================================================== #
      # === LINKS.md
      # =================================================================== #
      when 'LINKS.md'
        cwd = return_pwd
        if cwd.include?('UNI_WIEN/') or
           cwd.include?('BOKU_WIEN/') or
           cwd.include?('TU_WIEN/') 
          # =============================================================== #
          # === Important universities:
          # =============================================================== #
          _ = File.basename(cwd)
          target_key_in_the_file_lecture_information = _.tr('_',' ')
          if @dataset.has_key? target_key_in_the_file_lecture_information
            homepage = return_homepage_of_this_key(target_key_in_the_file_lecture_information)
            # ============================================================= #
            # Note that homepage could be an array like this:
            #
            # ["https://tiss.tuwien.ac.at/course/courseDetails.xhtml?dswid=8441&dsrid=431&courseNr=163107&semester=2021W",
            #  "https://tiss.tuwien.ac.at/course/courseDetails.xhtml?dswid=8441&dsrid=431&courseNr=163107&semester=2019W"]
            #
            # As this is unwanted the next line has to check for
            # this condition.
            # ============================================================= #
            if homepage.is_a? Array
              homepage = homepage.first
            end
            File.delete(this_file)
            append_what_into(SPACER+N, this_file)
            append_what_into('# === Offizieller Vorlesungsauftritt:'+N, this_file)
            append_what_into(SPACER+N, this_file)
            append_what_into(
              homepage+N+N, # And append the homepage there as well.
              this_file
            )
          end
        end
      end
      if open_files_in_editor?
        verbose_open_this_file_in_editor(this_file)
      end
    end
  }
end

#check_on_the_given_commandline_argumentsObject

#

check_on_the_given_commandline_arguments

#


196
197
198
199
200
201
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 196

def check_on_the_given_commandline_arguments
  case @commandline_arguments
  when /^-?-?open$/i,'ALL'
    @open_files_in_editor = true
  end
end

#open_files_in_editor?Boolean

#

open_files_in_editor?

#

Returns:

  • (Boolean)


158
159
160
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 158

def open_files_in_editor?
  @open_files_in_editor
end

#resetObject

#

reset (reset tag)

#


65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 65

def reset
  super()
  # ======================================================================= #
  # === @namespace
  # ======================================================================= #
  @namespace = NAMESPACE
  # ======================================================================= #
  # === @dataset
  # ======================================================================= #
  @dataset = return_dataset_from_file_lecture_information
  # ======================================================================= #
  # === @open_files_in_editor
  # ======================================================================= #
  @open_files_in_editor = false
end

#return_homepage_of_this_key(target_key) ⇒ Object

#

return_homepage_of_this_key

#


165
166
167
168
169
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 165

def return_homepage_of_this_key(target_key)
  pointer = @dataset[target_key]
  homepage = pointer[:homepage]
  homepage
end

#runObject

#

run (run tag)

#


225
226
227
228
229
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 225

def run
  check_on_the_given_commandline_arguments
  autogenerate_default_files
  sanitize_autogenerated_files
end

#sanitize_autogenerated_filesObject

#

sanitize_autogenerated_files

#


174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 174

def sanitize_autogenerated_files
  _ = 'INHALT.md' # Hardcoded.
  name = File.basename(return_pwd)
  name.tr!('_',' ')
  # ======================================================================= #
  # Every INHALT file should include a proper LV-Nummer, unless it was 
  # just recently created.
  # ======================================================================= #
  if (Time.now - File.ctime(_)) < 5 # Ok we assume it was recently created.  
    if File.exist? _
      append_what_into('=== LV-Nummer '+name+N+N, _)
    else
      opnn; e 'No file at '+sfile(_)+' exists. Thus, we can not append.'
    end
  else
    warn_user_that_this_file_already_exists(_)
  end
end

#verbose_open_this_file_in_editor(this_file) ⇒ Object

#

verbose_open_this_file_in_editor

#


215
216
217
218
219
220
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 215

def verbose_open_this_file_in_editor(this_file)
  opnn; e 'Also opening the file '+sfile(File.basename(this_file))+
          ' in the editor next.'
  _ = "#{USE_THIS_EDITOR} #{this_file}"
  system _ # Could change to esystem perhaps.
end

#warn_user_that_this_file_already_exists(this_file) ⇒ Object

#

warn_user_that_this_file_already_exists

#


206
207
208
209
210
# File 'lib/studium/utility_scripts/studium_skeleton.rb', line 206

def warn_user_that_this_file_already_exists(this_file)
  opnn; e 'A file called '+sfile(this_file)+' already exists.'
  opnn; ewarn 'We will not overwrite this ^^^ already existing file.'
  verbose_open_this_file_in_editor(this_file) if open_files_in_editor?
end