]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/remind.rb
Utils: time parsing routines
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / remind.rb
index 0d6e9eccb88c8f1f9c4fa4a0bfd68bc7cd884f67..1c1a21a93fc356cdf8f42583a98e275d9e387b75 100644 (file)
@@ -5,100 +5,7 @@ class RemindPlugin < Plugin
   #
   # Throws:: RunTimeError "invalid time string" on parse failure
   def timestr_offset(timestr)
-    case timestr
-      when (/^(\S+)\s+(\S+)$/)
-        mult = $1
-        unit = $2
-        if(mult =~ /^([\d.]+)$/)
-          num = $1.to_f
-          raise "invalid time string" unless num
-        else
-          case mult
-            when(/^(one|an|a)$/)
-              num = 1
-            when(/^two$/)
-              num = 2
-            when(/^three$/)
-              num = 3
-            when(/^four$/)
-              num = 4
-            when(/^five$/)
-              num = 5
-            when(/^six$/)
-              num = 6
-            when(/^seven$/)
-              num = 7
-            when(/^eight$/)
-              num = 8
-            when(/^nine$/)
-              num = 9
-            when(/^ten$/)
-              num = 10
-            when(/^fifteen$/)
-              num = 15
-            when(/^twenty$/)
-              num = 20
-            when(/^thirty$/)
-              num = 30
-            when(/^sixty$/)
-              num = 60
-            else
-              raise "invalid time string"
-          end
-        end
-        case unit
-          when (/^(s|sec(ond)?s?)$/)
-            return num
-          when (/^(m|min(ute)?s?)$/)
-            return num * 60
-          when (/^(h|h(ou)?rs?)$/)
-            return num * 60 * 60
-          when (/^(d|days?)$/)
-            return num * 60 * 60 * 24
-          else
-            raise "invalid time string"
-        end
-      when (/^(\d+):(\d+):(\d+)$/)
-        hour = $1.to_i
-        min = $2.to_i
-        sec = $3.to_i
-        now = Time.now
-        later = Time.mktime(now.year, now.month, now.day, hour, min, sec)
-        return later - now
-      when (/^(\d+):(\d+)$/)
-        hour = $1.to_i
-        min = $2.to_i
-        now = Time.now
-        later = Time.mktime(now.year, now.month, now.day, hour, min, now.sec)
-        return later - now
-      when (/^(\d+):(\d+)(am|pm)$/)
-        hour = $1.to_i
-        min = $2.to_i
-        ampm = $3
-        if ampm == "pm"
-          hour += 12
-        end
-        now = Time.now
-        later = Time.mktime(now.year, now.month, now.day, hour, min, now.sec)
-        return later - now
-      when (/^(\S+)$/)
-        num = 1
-        unit = $1
-        case unit
-          when (/^(s|sec(ond)?s?)$/)
-            return num
-          when (/^(m|min(ute)?s?)$/)
-            return num * 60
-          when (/^(h|h(ou)?rs?)$/)
-            return num * 60 * 60
-          when (/^(d|days?)$/)
-            return num * 60 * 60 * 24
-          else
-            raise "invalid time string"
-        end
-      else
-        raise "invalid time string"
-    end
+    Utils.parse_time_offset(timestr)
   end
 
   def initialize
@@ -202,11 +109,11 @@ class RemindPlugin < Plugin
   end
   def no_more(m, params)
     who = params.has_key?(:who) ? params[:who] : m.sourcenick
-    deleted = params.has_key?(:string) ? 
+    deleted = params.has_key?(:string) ?
               del_reminder(who, params[:string].to_s) : del_reminder(who)
     if deleted
       m.okay
-    else 
+    else
       m.reply "but I wasn't going to :/"
     end
   end