Class: Roebe::WochentagAnzeiger

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

Overview

Roebe::WochentagAnzeiger

Constant Summary collapse

DEFAULT_DAY =
#

DEFAULT_DAY

#
'25.10.2018'

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 = nil, run_already = true) ⇒ WochentagAnzeiger

#

initialize

#


34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/roebe/classes/wochentag_anzeiger.rb', line 34

def initialize(
    i           = nil,
    run_already = true
  )
  reset
  set_input(i)
  case run_already # case tag
  when :be_silent,
       :be_quiet # WochentagAnzeiger.new('25.10.2014', :be_quiet).name?
    do_not_be_verbose
  end
  run if run_already
end

Class Method Details

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

#

Roebe::WochentagAnzeiger

Usage example:

Roebe::WochentagAnzeiger['03.02.2015'] # => "Dienstag"
#


199
200
201
# File 'lib/roebe/classes/wochentag_anzeiger.rb', line 199

def self.[](i = '31.03.2018')
  new(i, :be_silent).which_day?
end

Instance Method Details

#bold_yellow(i) ⇒ Object

#

bold_yellow

#


89
90
91
92
93
# File 'lib/roebe/classes/wochentag_anzeiger.rb', line 89

def bold_yellow(i)
  Colours.yellow+
  i.to_s+
  Colours.rev
end

#input?Boolean

#

input?

#

Returns:

  • (Boolean)


82
83
84
# File 'lib/roebe/classes/wochentag_anzeiger.rb', line 82

def input?
  @input
end

#name?(i = @input) ⇒ Boolean Also known as: which_day?

#

name?

Display which day of the week it is.

#

Returns:

  • (Boolean)


159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/roebe/classes/wochentag_anzeiger.rb', line 159

def name?(i = @input)
  if i.is_a? Array
    i = i.first
  end
  i = i.to_s.dup
  i.delete!('#') if i.include? '#'
  i.delete!(' ') if i.include? ' '
  splitted = i.split('.')
  if splitted
    begin
      date = ::Time.mktime(splitted[2], splitted[1], splitted[0])
      name = return_german_name_for_this_weekday(date.wday)
      return name # Return the name here.
    rescue Exception => error
      if is_on_roebe?
        e 'The following error occurred: '; pp error
      end
    end
  else
    opn; e 'splitted is '+swarn('nil')+', some mistake must have happened.'
    opn; e 'The input was:'
    pp i
  end
end

#resetObject

#

reset

#


51
52
53
54
55
56
57
58
# File 'lib/roebe/classes/wochentag_anzeiger.rb', line 51

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @be_verbose
  # ======================================================================= #
  set_be_verbose
end

#runObject

#

run (run tag)

#


187
188
189
# File 'lib/roebe/classes/wochentag_anzeiger.rb', line 187

def run
  show_wochentag if be_verbose?
end

#sanitize_inputObject

#

sanitize_input (sanitize tag)

#


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

def sanitize_input
  @input.map! {|line|
    line = line.dup if line.frozen?
    line.strip!
    line.tr!('/','.') if line.include? '/'
    # ===================================================================== #
    # If the line has only one '.' then the current year will be appended.
    # ===================================================================== #
    if line.count('.') == 1
      line << '.'+current_year
    end
    # ===================================================================== #
    # Unless the line ends with 4 numbers:
    # ===================================================================== #
    unless line =~ /\d{4}$/ # .end_with?
      line << return_current_year
    end
    # ===================================================================== #
    # Assume an internal newline here.
    # ===================================================================== #
    if line.include? N
      line = line.split(N).reject(&:empty?).map(&:strip).join(N)
    end
    if line.include?('{') and line.include?('}')
      # =================================================================== #
      # This is the case for input such as:
      #   weekend {09,11,16,23,25}.04.2018
      # In such a case we must expand these entries towards the point
      # were we assume that the user wanted to show the day of several
      # dates here.
      # =================================================================== #
      starting_position = line.index('}') + 1
      trailing_date_part = line[ starting_position .. -1] # This is e. g. '.04.2018'.
      _ = line[0 .. ( line.index('}') - 1 ) ].delete('{')
      _ = _.split(',').map {|inner_liner|
        inner_liner+trailing_date_part
      }
      line = _ # Re-assign here.
    end
    line
  }
  @input.flatten!
end

#set_input(i = DEFAULT_DAY) ⇒ Object

#

set_input

#


63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/roebe/classes/wochentag_anzeiger.rb', line 63

def set_input(
    i = DEFAULT_DAY
  )
  i = DEFAULT_DAY if i.nil? or i.empty?
  i = [i] unless i.is_a? Array
  i.map! {|entry|
    if entry.end_with? ','
      entry = entry.dup if entry.frozen?
      entry.chop!
    end
    entry
  }
  @input = i
  sanitize_input # <- Always sanitize the input at once.
end

#show_wochentag(i = @input) ⇒ Object Also known as: report

#

show_wochentag

This is the general report-method of this class.

#


147
148
149
150
151
152
# File 'lib/roebe/classes/wochentag_anzeiger.rb', line 147

def show_wochentag(i = @input) # Report the "Wochentag" through this method here.
  i.flatten.each {|line|
    e "#{rev}Der Wochentag #{sfancy(line)} #{rev}ist ein "\
      "#{slateblue(name?(line))}#{rev}."
  }
end