Class: Studium::Wochenplanung

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

Overview

Studium::Wochenplanung.new

Constant Summary collapse

NAMESPACE =
#

NAMESPACE

#
inspect
GENERATE_SPREADSHEET =
#

GENERATE_SPREADSHEET

#
false
USE_THIS_REGEX =
#

USE_THIS_REGEX

#
/(\d\d:\d\d-\d\d:\d\d)/
SHALL_WE_DEBUG =
#

SHALL_WE_DEBUG

#
false
WOCHENTAGE_DIRECTORY =

Whether to debug or whether we won't.

STUDIUM_YAML_DIR+'wochentage/'
ALL_WEEKDAYS =
#

ALL_WEEKDAYS

#
Dir[WOCHENTAGE_DIRECTORY+'*.yml'].select {|entry|
  Studium::ARRAY_AVAILABLE_WEEKDAYS.include?(
    File.basename(entry).sub(/\.yml$/,'')
  )
}

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

#

initialize

#


69
70
71
72
73
74
75
76
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 69

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

Instance Method Details

#available_weekdaysObject

#

available_weekdays

#


132
133
134
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 132

def available_weekdays
  Studium.available_weekdays
end

#can_use_spreadsheet?Boolean

#

can_use_spreadsheet?

#

Returns:

  • (Boolean)


227
228
229
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 227

def can_use_spreadsheet?
  CAN_USE_SPREADSHEET
end

#consider_generating_spreadsheet_fileObject

#

consider_generating_spreadsheet_file

#


234
235
236
237
238
239
240
241
242
243
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
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 234

def consider_generating_spreadsheet_file
  if can_use_spreadsheet? and GENERATE_SPREADSHEET
    store_here = '/Wochenplanung_'+Studium.today?+'.xls'
    # Create the rows to be inserted
    the_weekdays = ['']+Studium.wochentage?
    opn; e 'Next generating a spreadsheet file at `'+sfile(store_here)+'`.'
    Spreadsheet.client_encoding = ::Studium.main_encoding?
    book = Spreadsheet::Workbook.new
    # Create the worksheet
    book.create_worksheet name: 'Wochenplanung'
    sheet = book.worksheet(0)
    sheet.insert_row(1, the_weekdays)
    format = Spreadsheet::Format.new :color => :green,
                                     :weight => :bold,
                                     :size => 13
    sheet.row(1).default_format = format
    sheet.insert_row(2, ['Uhrzeit'])
    sheet.row(2).default_format = Spreadsheet::Format.new(
      weight: :bold,
      size:   11
    )
    sheet.insert_row( 4, ['08:00-09:00'])
    sheet.insert_row( 5, ['09:00-10:00'])
    sheet.insert_row( 6, ['10:00-11:00'])
    sheet.insert_row( 7, ['11:00-12:00'])
    sheet.insert_row( 8, ['12:00-13:00'])
    sheet.insert_row( 9, ['13:00-14:00'])
    sheet.insert_row(10, ['14:00-15:00'])
    sheet.insert_row(11, ['15:00-16:00'])
    sheet.insert_row(12, ['16:00-17:00'])
    book.write(store_here)
    # ===================================================================== #
    # === Tap into class Open next
    # ===================================================================== #
    if Object.const_defined? :Open
      Open.in_editor(store_here) if Open.respond_to? :in_editor
    end
  end
end

#input?Boolean

#

input?

#

Returns:

  • (Boolean)


97
98
99
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 97

def input?
  @input
end

#load_weekdaysObject

#

load_weekdays

#


113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 113

def load_weekdays
  ALL_WEEKDAYS.each {|location|
    name_of_the_weekday = File.basename(location).gsub(/\.yml$/,'')
    begin
      dataset = YAML.load_file(location)
    rescue ArgumentError => error
      opn; e 'The file at `'+sfile(location)+'` has a syntax error.'
      pp error
    end
    # ===================================================================== #
    # Here we will add the different weekdays into our @hash_wochentage.
    # ===================================================================== #
    @hash_wochentage[name_of_the_weekday] = dataset
  }
end

#resetObject

#

reset (reset tag)

#


81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 81

def reset
  super()
  set_input
  # ======================================================================= #
  # === @namespace
  # ======================================================================= #
  @namespace = NAMESPACE
  # ======================================================================= #
  # === @hash_wochentage
  # ======================================================================= #
  @hash_wochentage = {}
end

#runObject

#

run (run tag)

#


139
140
141
142
143
144
145
146
147
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
206
207
208
209
210
211
212
213
214
215
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 139

def run
  load_weekdays
  colour = :steelblue # We use this colour for now.
  the_days = Studium::GERMAN_WEEK_NAMES.reject {|key, value| value == 'Sonntag' }
  cliner # Initial cliner.
pp input?
  if available_weekdays.include? input? # This is the case when the user did input e. g. "dienstag".
    the_days = the_days.select {|key, value|
      value.downcase == input?
    }
  end
  the_days.each_value {|week_day|
    downcased = week_day.downcase
    colourized_weekday = ::Colours.send(colour, week_day+':')
    e colourized_weekday
    e
    if @hash_wochentage.has_key?(downcased)
      dataset = @hash_wochentage[downcased]
      # =================================================================== #
      # Next, we must sort it based on the key.
      # =================================================================== #
      if dataset # Will be false if we have no date there.
        dataset = Hash[dataset.sort_by {|key, value| Time.parse(key) }]
        pp dataset if SHALL_WE_DEBUG
        dataset.each_pair {|datum, course|
          result = '  '+crimson(datum)+' -> '
          # =============================================================== #
          # First, handle Arrays for the given day.
          # =============================================================== #
          if course.is_a? Array
            course.map! {|entry|
pp entry.encoding.to_s
pp entry.encoding.to_s
pp entry.encoding.to_s
              # =========================================================== #
              # Colourize "Prüfung" in darkred.
              # =========================================================== #
              if entry.include? 'Prüfung'
                entry.gsub!(/(Prüfung)/, darkred('\1'))
              end
              # =========================================================== #
              # Next, assume that we handle a specific time of the given
              # day.
              # =========================================================== #
              if entry.count(':') > 1 and entry.include? '-'
                entry =~ USE_THIS_REGEX
                entry.gsub!(USE_THIS_REGEX, lightgreen('\1'))
              end
              entry
            }
            course.each_with_index {|entry, index| # Padded.
              result << N+'                ' unless index == 0
              result << slateblue(entry)
            }
          else
            course = course.force_encoding(ENCODING_ISO)
            # =============================================================== #
            # Next add the course, but first check if the course has "Uhrzeit"
            # information. If so then we will colourize it.
            # =============================================================== #
            if course.count(':') > 1 and course.include? '-'
              course =~ USE_THIS_REGEX
              course.gsub!(USE_THIS_REGEX, lightgreen('\1'))
            end
            result << slateblue(course)
          end
          if datum == today? # Is today! Colourize in red.
            result.prepend(red('TODAY '))
          end
          e result
        }
      end
      cliner
    end
  }
  consider_generating_spreadsheet_file
end

#set_input(i = '') ⇒ Object

#

set_input

#


104
105
106
107
108
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 104

def set_input(i = '')
  i = i.first if i.is_a? Array
  i = i.to_s.dup # We want a String.
  @input = i
end

#today?Boolean

#

today?

#

Returns:

  • (Boolean)


220
221
222
# File 'lib/studium/utility_scripts/wochenplanung.rb', line 220

def today?
  Studium.today?
end