Class: Roebe::Rdate

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

Overview

Roebe::Rdate

Constant Summary collapse

ARRAY_MONTHS =
#

ARRAY_MONTHS

#
%w(
  Jänner    Februar  März
  April     Mai      Juni
  Juli      August   September
  Oktober   November Dezember
)
ARRAY_MONTHS_SHORTCUTS =
#

ARRAY_MONTHS_SHORTCUTS

#
%w(
  JAN FEB MAR APR MAY JUN JUL AUG SEP OKT NOV DEC
)

Constants inherited from Base

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

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

#

initialize

This class can be called like in this way:

rdate 02.03.2007  17:22:47
rdate 12.JUL.2007 17:21:00 
rdate 29.AUG.2007 19:20:00
rdate today 22:31:00
#


57
58
59
60
61
62
63
64
# File 'lib/roebe/classes/rdate.rb', line 57

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

Instance Method Details

#create_dateObject

#

create_date

This method will turn the arguments into “proper” arguments for the date command.

#


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

def create_date
  # ======================================================================= #
  # The first part includes the "02.03.2007" string.
  # ======================================================================= #
  if @string.include? ' '
    first_part, hours_part = @string.split ' '
  else # ok, the user has probably only given us a time string.
    first_part = 'today' # special instruction.
    hours_part = @string
  end
  splitted_hours_part = hours_part.split ':'
  if splitted_hours_part[1].to_i > 60
    # wrong format, we will thus correct it silently by setting it to 5x
    modified = splitted_hours_part[1].to_s
    modified[0,1] = '5'
    _ = []
    _ << splitted_hours_part[0] << modified
    _ << splitted_hours_part[2] if splitted_hours_part[2] 
    hours_part = _.join(':')
  end
  case first_part.downcase # make special stuff (case tag)
  when 'def','today','tod'
    first_part = ::Time.now.strftime('%d.%m.%Y')
  # === open
  when /^-?-?OPEN/i
    open_this_file_in_editor; exit
  end
  # ======================================================================= #
  # Handle year part.
  # ======================================================================= #
  if first_part.count('.') == 2
    set_year(first_part.split('.')[-1])
  end
  # if we passed a trivial month:
  month = first_part.split('.')[1]
  if ARRAY_MONTHS_SHORTCUTS.include? month
    # then we turn it into a proper number here:
    real_sanitized_index = ARRAY_MONTHS_SHORTCUTS.index(month) + 1
    first_part = first_part.split '.'
    first_part[1] = real_sanitized_index
    first_part = first_part.join '.'
  end
  first_part_refined = first_part.split('.')[0..1].reverse.join '.'
  begin
    @string = "#{first_part_refined}.#{@year} #{hours_part}".dup
    @string.tr!('.','/')
    @string = 'date -s "'+@string+'"'
    opn; e @string
    system @string
  rescue Exception => error
    warn error.class.to_s+': '
    pp error
    e 'An error happened in the method '+__method__.to_s+'().'
    e @string
  end
end

#determine_the_main_string_from_the_commandline_argumentsObject

#

determine_the_main_string_from_the_commandline_arguments

#


234
235
236
# File 'lib/roebe/classes/rdate.rb', line 234

def determine_the_main_string_from_the_commandline_arguments
  @string = commandline_arguments?.flatten.join(' ').strip
end

#get_current_date_and_timeObject

#

get_current_date_and_time

This method will be invoked by create_date() and will simply return a format such as the following:

12.JUL.2007 17:41:00

The format to parse is will be:

"Fri Jul 20 20:15:53 +0200 2007"
#


121
122
123
124
# File 'lib/roebe/classes/rdate.rb', line 121

def get_current_date_and_time
  @time_now = ::Time.now.strftime('%d.%m.%Y %H:%M:%S')
  return @time_now
end
#

menu (menu tag)

#


210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
# File 'lib/roebe/classes/rdate.rb', line 210

def menu(
    i = @string # ← This is the user-input really.
  )
  case i # case tag
  when 'FUTURE'
    @string = '11.10.2015 03:25:15' # Hardcoded for now.
  # ======================================================================= #
  # === rdate --help
  # ======================================================================= #
  when /^-?-?help$/i,
       ''
    show_usage_examples
  else
    if input?.strip.empty?
      show_usage_examples
    else
      create_date # <- This is the default entry point for this class.
    end
  end
end

#open_this_file_in_editorObject

#

open_this_file_in_editor

#


129
130
131
132
133
# File 'lib/roebe/classes/rdate.rb', line 129

def open_this_file_in_editor
  require 'esystem' unless Object.const_defined? :Esystem
  _ = ENV['EDITOR']+' '+__FILE__
  Esystem.esystem _
end

#resetObject

#

reset (reset tag)

#


69
70
71
72
73
74
75
76
77
78
# File 'lib/roebe/classes/rdate.rb', line 69

def reset
  super()
  infer_the_namespace
  # ======================================================================= #
  # === @string
  # ======================================================================= #
  @string = ''.dup
  @weekday = Date::DAYNAMES[Date.today.wday] # The day of the week. Not really in use right now.
  set_year
end

#runObject

#

run (run tag)

#


241
242
243
244
# File 'lib/roebe/classes/rdate.rb', line 241

def run
  determine_the_main_string_from_the_commandline_arguments
  menu
end

#set_year(i = ::Time.now.year.to_s) ⇒ Object

#

set_year

This set the @year variable. The problem is that this may be incorrect depending on whether Time.now.year returns the right result or not. For instance, Nov 2013 this defaulted to 2014, which seems to be the hardware clock.

#


88
89
90
91
# File 'lib/roebe/classes/rdate.rb', line 88

def set_year(i = ::Time.now.year.to_s)
  # i = 2012 if i == '2014' #Wtf was I thinking here?
  @year = i.to_s
end

#show_usage_examplesObject

#

show_usage_examples (show help tag)

Just help the user by showing some examples.

#


98
99
100
101
102
103
104
105
106
# File 'lib/roebe/classes/rdate.rb', line 98

def show_usage_examples
  e rev+'To change the '+sfancy('date')+rev+', please supply at '\
    'least one argument, as in:'
  e
  e steelblue("  rdate #{get_current_date_and_time}")
  e steelblue('  rdate def 17:00:00')
  e steelblue('  rdate today 18:00:00')
  e
end

#string?Boolean Also known as: input?

#

string?

#

Returns:

  • (Boolean)


203
204
205
# File 'lib/roebe/classes/rdate.rb', line 203

def string?
  @string
end