class Minutely::Time::Parser
A parser that tries to convert the input value to `Minutely::Time`.
Public Instance Methods
parse()
click to toggle source
# File lib/minutely/time/parser.rb, line 8 def parse return value if value.is_a?(Time) return Time.new(value.hour, value.min) if like_time? case value when nil then nil when Integer then parse_integer when String then parse_string else raise ArgumentError, 'invalid time' end end
Private Instance Methods
like_time?()
click to toggle source
# File lib/minutely/time/parser.rb, line 22 def like_time? value.respond_to?(:hour) && value.respond_to?(:min) end
parse_integer()
click to toggle source
# File lib/minutely/time/parser.rb, line 26 def parse_integer hour = value / 100 minute = value % 100 Time.new(hour, minute) end
parse_string()
click to toggle source
# File lib/minutely/time/parser.rb, line 32 def parse_string return nil if value.empty? matches = value.match(/\A(?<hour>\d{1,2}):(?<minute>\d{2})\z/) raise ArgumentError, 'invalid time string' unless matches Time.new(matches[:hour].to_i, matches[:minute].to_i) end