timerizer 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/timerizer.rb +43 -10
- metadata +1 -1
data/lib/timerizer.rb
CHANGED
@@ -457,6 +457,21 @@ class WallClock
|
|
457
457
|
end
|
458
458
|
end
|
459
459
|
|
460
|
+
# Takes a string and turns it into a WallClock time
|
461
|
+
# @param [String] string The string to convert
|
462
|
+
# @return [WallClock] The time as a WallClock
|
463
|
+
# @example
|
464
|
+
# WallClock.from_string("10:30 PM")
|
465
|
+
# # => 10:30:00 PM
|
466
|
+
# WallClock.from_string("13:01:23")
|
467
|
+
# # => 1:01:23 PM
|
468
|
+
# @see #to_s
|
469
|
+
def self.from_string(string)
|
470
|
+
time, meridiem = string.split(' ', 2)
|
471
|
+
hour, minute, second = time.split(':', 3)
|
472
|
+
WallClock.new(hour.to_i, minute.to_i, second.to_i || 0, meridiem || :am)
|
473
|
+
end
|
474
|
+
|
460
475
|
# Returns the time of the WallClock on a date
|
461
476
|
# @param [Date] date The date to apply the time on
|
462
477
|
# @return [Time] The time after the given date
|
@@ -562,20 +577,38 @@ class WallClock
|
|
562
577
|
|
563
578
|
# Convert {WallClock} to a human-readable format.
|
564
579
|
# @param [Symbol] system The hour system to use (`:twelve_hour` or `:twenty_four_hour`; default `:twelve_hour`)
|
580
|
+
# @param [Hash] options Extra options for the string to use
|
581
|
+
# @option options [Boolean] :use_seconds Whether or not to include seconds in the conversion to a string
|
582
|
+
# @option options [Boolean] :include_meridian Whether or not to include the meridian for a twelve-hour time
|
565
583
|
# @example
|
566
|
-
# time = WallClock.new(5, 37, :pm)
|
584
|
+
# time = WallClock.new(5, 37, 41, :pm)
|
567
585
|
# time.to_s
|
568
|
-
# => "5:37:
|
569
|
-
# time.to_s(:twenty_four_hour)
|
570
|
-
# => "17:37:
|
586
|
+
# => "5:37:41 PM"
|
587
|
+
# time.to_s(:twenty_four_hour, :use_seconds => true)
|
588
|
+
# => "17:37:41"
|
589
|
+
# time.to_s(:twelve_hour, :use_seconds => false, :include_meridiem => false)
|
590
|
+
# => "5:37"
|
591
|
+
# time.to_s(:twenty_four_hour, :use_seconds =>false)
|
592
|
+
# => "17:37"
|
571
593
|
# @raise ArgumentError Argument isn't a proper system
|
572
|
-
def to_s(system = :twelve_hour)
|
594
|
+
def to_s(system = :twelve_hour, options = {})
|
595
|
+
options = {:use_seconds => true, :include_meridiem => true}.merge(options)
|
573
596
|
pad = "%02d"
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
597
|
+
meridiem = self.meridiem.to_s.upcase
|
598
|
+
hour = self.hour(system)
|
599
|
+
minute = pad % self.minute
|
600
|
+
second = pad % self.second
|
601
|
+
|
602
|
+
string = [hour, minute].join(':')
|
603
|
+
if options[:use_seconds]
|
604
|
+
string = [string, second].join(':')
|
605
|
+
end
|
606
|
+
|
607
|
+
case system
|
608
|
+
when :twelve_hour
|
609
|
+
options[:include_meridiem] ? [string, meridiem].join(' ') : string
|
610
|
+
when :twenty_four_hour
|
611
|
+
string
|
579
612
|
else
|
580
613
|
raise ArgumentError, "system should be :twelve_hour or :twenty_four_hour"
|
581
614
|
end
|