Module: TimeReceive::ClassMethods
- Included in:
- TimeReceive
- Defined in:
- lib/time_receive.rb
Instance Method Summary collapse
- #add_time_period(time, period) ⇒ Object
- #calculate_elapsed_time(start_time, end_time) ⇒ Object
- #days_until(target_date) ⇒ Object
- #format_remaining_time(remaining_seconds) ⇒ Object
- #now(format_string = nil) ⇒ Object
- #parse_time(time_string, format_string) ⇒ Object
- #timer(user_time, &block) ⇒ Object
- #today? ⇒ Boolean
Instance Method Details
#add_time_period(time, period) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/time_receive.rb', line 75 def add_time_period(time, period) raise ArgumentError, "Invalid time: #{time}" unless time.is_a?(Time) case period when :hours time + 3600 when :minutes time + 60 when :days time + 86_400 else raise ArgumentError, "Unsupported period: #{period}" end end |
#calculate_elapsed_time(start_time, end_time) ⇒ Object
90 91 92 93 94 95 96 97 98 99 |
# File 'lib/time_receive.rb', line 90 def calculate_elapsed_time(start_time, end_time) raise ArgumentError, "Invalid start_time: #{start_time}" unless start_time.is_a?(Time) raise ArgumentError, "Invalid end_time: #{end_time}" unless end_time.is_a?(Time) elapsed_seconds = (end_time - start_time).to_i hours = elapsed_seconds / 3600 minutes = (elapsed_seconds % 3600) / 60 "#{hours} hours and #{minutes} minutes" end |
#days_until(target_date) ⇒ Object
69 70 71 72 73 |
# File 'lib/time_receive.rb', line 69 def days_until(target_date) raise ArgumentError, "Invalid target_date: #{target_date}" unless target_date.is_a?(Date) (target_date - Date.today).to_i end |
#format_remaining_time(remaining_seconds) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/time_receive.rb', line 53 def format_remaining_time(remaining_seconds) hours = remaining_seconds / 3600 minutes = (remaining_seconds % 3600) / 60 seconds = remaining_seconds % 60 hours_str = hours.to_s.rjust(2, "0") minutes_str = minutes.to_s.rjust(2, "0") seconds_str = seconds.to_s.rjust(2, "0") "#{hours_str}:#{minutes_str}:#{seconds_str}" end |
#now(format_string = nil) ⇒ Object
22 23 24 25 |
# File 'lib/time_receive.rb', line 22 def now(format_string = nil) formatter = TimeFormatter.new(format_string || "%Y-%m-%d %H:%M:%S") formatter.format(Time.now) end |
#parse_time(time_string, format_string) ⇒ Object
27 28 29 30 31 |
# File 'lib/time_receive.rb', line 27 def parse_time(time_string, format_string) Time.strptime(time_string, format_string) rescue ArgumentError raise TimeReceiveError, "Invalid time string: #{time_string}" end |
#timer(user_time, &block) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/time_receive.rb', line 33 def timer(user_time, &block) raise ArgumentError, "Invalid user_time: #{user_time}" unless user_time.is_a?(Time) remaining_seconds = (user_time - Time.now).to_i loop do remaining_time_str = format_remaining_time(remaining_seconds) puts "Time until deadline: #{remaining_time_str}" sleep 1 / 1.9 remaining_seconds -= 1 break if remaining_seconds <= 0 end block.call if block_given? end |
#today? ⇒ Boolean
65 66 67 |
# File 'lib/time_receive.rb', line 65 def today? Date.today == Time.now.to_date end |