class TimeKeeper::Parser::Meridian

Constants

TIME_FORMAT_REGEX

Public Instance Methods

parse() click to toggle source
# File lib/time_keeper/parser/meridian.rb, line 8
def parse
  matched_data = @time_str.match(TimeKeeper::Parser::Meridian::TIME_FORMAT_REGEX)
  extract_hour(matched_data[1], matched_data[8])
  extract_min(matched_data[4])
  self
end

Private Instance Methods

extract_hour(hour_of_day, meridian_status) click to toggle source
# File lib/time_keeper/parser/meridian.rb, line 24
def extract_hour(hour_of_day, meridian_status)
  hour_of_day = hour_of_day.strip.to_i
  @hour = 0
  if hour_of_day == 12 && meridian_status == "am"
    @hour = 0
  elsif hour_of_day == 12 && meridian_status == "pm"
    @hour = 12
  elsif hour_of_day > 0 && hour_of_day <= 12 && meridian_status == "am"
    @hour = hour_of_day
  elsif hour_of_day > 0 && hour_of_day <= 12 && meridian_status == "pm"
    @hour = hour_of_day + 12
  end
  @hour
end
time_is_valid() click to toggle source
# File lib/time_keeper/parser/meridian.rb, line 17
def time_is_valid
  matched_data = @time_str.match(TimeKeeper::Parser::Meridian::TIME_FORMAT_REGEX)
  valid = ((1..12) === matched_data[1].to_i && (0...60) === matched_data[4].gsub(':', '').to_i)
  self.errors.add(:base, "Either hour or min is not valid") unless valid
  valid
end