Class: Roebe::BirthdayNotifications
- Inherits:
-
Base
show all
- Defined in:
- lib/roebe/classes/birthday_notifications.rb
Constant Summary
collapse
- YELLOW =
Colours::YELLOW
- ARRAY_SKIP_THESE_NAMES =
#
ARRAY_SKIP_THESE_NAMES
The following names will be skipped.
#
[
'Guido Wiedenegger'
]
- FILE_CONTACTS =
#
bl $MISC/YAML/contacts.yml
#
::Roebe.file_contacts
- CONTACTS =
FILE_CONTACTS
- N_DAYS_IN_ADVANCE =
14
Constants inherited
from Base
Roebe::Base::COLOURS, Roebe::Base::HOME_DIRECTORY_OF_USER_X, Roebe::Base::N, Roebe::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, #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, #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, #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
#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(optional_set_n_days_in_advance = nil, run_already = true) ⇒ BirthdayNotifications
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 51
def initialize(
optional_set_n_days_in_advance = nil,
run_already = true
)
reset
set_n_days_in_advance(
optional_set_n_days_in_advance
)
case run_already
when :do_not_run_yet
run_already = false
end
if block_given?
yielded = yield
if yielded.is_a? Hash
if yielded.has_key? :n_days_in_advance
set_n_days_in_advance(
yielded.delete(:n_days_in_advance)
)
end
if yielded.has_key? :be_quiet
set_be_quiet(yielded.delete(:be_quiet))
end
end
end
run if run_already
end
|
Instance Method Details
#append_the_current_year_to_the_main_hash ⇒ Object
#
append_the_current_year_to_the_main_hash
This method will simply append the current year, e. g. 2020, to the main Hash.
#
241
242
243
244
245
246
247
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 241
def append_the_current_year_to_the_main_hash
current_year = Time.now.year
@hash_birthday_candidates.transform_keys! {|this_key|
this_key = this_key.dup if this_key.frozen?
this_key << ".#{current_year}"
}
end
|
252
253
254
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 252
def erev
print rev
end
|
#hash_birthday_candidates? ⇒ Boolean
Also known as:
main_hash?
#
hash_birthday_candidates?
#
259
260
261
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 259
def hash_birthday_candidates?
@hash_birthday_candidates
end
|
#hash_birthdays? ⇒ Boolean
Also known as:
hash_birthdays
202
203
204
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 202
def hash_birthdays?
@hash_birthdays
end
|
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 127
def load_contacts(
file_contacts = FILE_CONTACTS
)
if File.exist?('/home/x/DATA/misc/YAML/contacts.yml') and
!File.exist?(file_contacts)
file_contacts = '/home/x/DATA/misc/YAML/contacts.yml'
end
unless File.exist? file_contacts
e 'Can not load the contacts as the file '+file_contacts+
' does not exist.'
return
end
begin
@contacts = YAML.load_file(file_contacts)
rescue Psych::SyntaxError => error
e 'This file has a syntax error.'
pp error
@contacts = nil
end
@contacts.each { |c|
geburtstag = c[3]
if geburtstag
name = c[0]
splitted = geburtstag.to_s.split('.')[0..-2]
_ = splitted.join('.')
value = @current_day + @n_days_in_advance
which_day = splitted.first.to_i
range = (@current_day..value)
if range.include?(which_day)
unless ARRAY_SKIP_THESE_NAMES.include? name
@hash_birthday_candidates[_] = name
end
end
end
} if @contacts
end
|
188
189
190
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 188
def red
Colours::RED
end
|
#report(be_silent_when_hash_is_empty = @be_silent) ⇒ Object
#
report (report tag)
Report to the user.
#
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 211
def report(
be_silent_when_hash_is_empty = @be_silent
)
if @hash_birthday_candidates.empty?
unless be_silent_when_hash_is_empty
end_day = Time.now + (60 * 60 * 24) * @n_days_in_advance
opn; e red+'No match was found. Noone seems to have a birthday '
opn; e red+'within the next coming `'+@n_days_in_advance.to_s+'` '+
'days. (Included up to: '+end_day.strftime('%d.%m.%Y')+')'
end
else
unless @be_silent
e rev+'We found these Birthday candidates ('+
YELLOW+@n_days_in_advance.to_s+Colours::LIGHTBLUE+
rev+' days in advance'+rev+'):'
@hash_birthday_candidates.each { |birthdate, name|
e Colours::LIGHTBLUE+' '+name+': '+
Colours::YELLOW+birthdate+'.'+@current_year
}
erev
end
end
end
|
#report_when_nothing_was_found ⇒ Object
#
report_when_nothing_was_found
#
174
175
176
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 174
def report_when_nothing_was_found
@be_silent = false
end
|
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 82
def reset
super()
infer_the_namespace
set_n_days_in_advance(N_DAYS_IN_ADVANCE)
@be_silent = true
@hash_birthday_candidates = {}
@current_day = Date.today.day
@current_month = Date.today.month
@current_year = Date.today.year.to_s
end
|
195
196
197
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 195
def rev
Colours::GREEN
end
|
266
267
268
269
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 266
def run
load_contacts
report
end
|
#set_be_quiet(i) ⇒ Object
181
182
183
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 181
def set_be_quiet(i)
@be_silent = i
end
|
#set_n_days_in_advance(i = N_DAYS_IN_ADVANCE) ⇒ Object
Also known as:
set_n_days
#
set_n_days_in_advance
#
114
115
116
117
118
119
120
121
122
|
# File 'lib/roebe/classes/birthday_notifications.rb', line 114
def set_n_days_in_advance(i = N_DAYS_IN_ADVANCE)
i = i.first if i.is_a? Array
i = N_DAYS_IN_ADVANCE if i.nil?
case i
when /help/
e 'The default is '+N_DAYS_IN_ADVANCE.to_s+' days into the future.'
end
@n_days_in_advance = i.to_i
end
|