Sha256: 788c3f18466349a65bd63431d7190c42da9fcc7e0bcda722ec31ba75fdd3845f

Contents?: true

Size: 797 Bytes

Versions: 1

Compression:

Stored size: 797 Bytes

Contents

require "attentive/entities/core/time/duration"
require "date"
require "time"

Attentive::Entity.define "core.time",
    "noon",
    "midnight",
    %q{(?:(?<hours>\d\d?):(?<minutes>\d\d)\s*(?<pm>pm?))},
    %q{(?:(?<hours>\d\d?)\s*(?:am?|(?<pm>pm?)))},
    %q{(?:(?<hours>\d\d?):(?<minutes>\d\d))} do |match|

  minutes = 0

  p match
  if match.matched?("hours")
    hours = match["hours"].to_i
    hours += 12 if match.matched?("pm")
    minutes = match["minutes"].to_i if match.matched?("minutes")
  else
    case match.to_s
    when "noon" then hours = 12
    when "midnight" then hours = 0
    else nomatch!
    end
  end

  nomatch! if hours < 0 || hours > 24
  nomatch! if minutes < 0 || minutes > 60

  today = Date.today; Time.new(today.year, today.month, today.day, hours, minutes)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
attentive-0.3.4 lib/attentive/entities/core/time.rb