]> ruin.nu Git - NDIRC.git/commitdiff
Converted the .time command
authorMichael Andreen <harv@ruin.nu>
Wed, 6 May 2009 21:17:06 +0000 (23:17 +0200)
committerMichael Andreen <harv@ruin.nu>
Sat, 9 May 2009 13:35:50 +0000 (15:35 +0200)
Commands/PA.pm
PA.pm

index 2440feaffc747649557f4f7de524144d0cad0f6c..633d2fee5d9a41ea94a584843be521f56fe8df82 100644 (file)
@@ -21,6 +21,7 @@ package NDIRC::Commands::PA;
 
 use strict;
 use warnings;
+use feature ':5.10';
 
 use Moose;
 use MooseX::MethodAttributes;
@@ -81,4 +82,27 @@ FROM galaxies WHERE x = ? AND y = ? AND tick = (SELECT max(tick) from galaxies)
        }
 }
 
+sub time
+       : Help(syntax: .time [tick] [timezone] | Gives the time at the specied tick. Assumes GMT if no timezone is given and current tick if no tick is given.)
+{
+       my ($self, $c, $msg) = @_;
+       my ($tick,$timezone) = $msg =~ /^(\d+)?\s*(\S+)?$/ or die 'ARGS';
+
+       eval {
+               $tick //= $c->model->selectrow_array(q{SELECT tick()});
+               $timezone //= 'GMT';
+               my $query = $c->model->prepare(q{
+SELECT date_trunc('seconds',now() + (($1 - tick()) || ' hr')::interval) AT TIME ZONE $2
+                       });
+               $query->execute($tick,$timezone);
+               my $time = $query->fetchrow_array;
+               $c->reply("Time at tick <b>$tick</b>, timezone <b>$timezone</b>: <b>$time</b>");
+       };
+       given ($@){
+               when(/time zone "(.+?)" not recognized/){
+                       $c->reply("<c04>$1</c> is not a valid timezone.");
+               }
+               die $@ if $@;
+       }
+}
 1;
diff --git a/PA.pm b/PA.pm
index 72050d851a77a7fce5902d222e5de807e412e8de..dd3dbb9a04deed3d06f6523cefecded5268dab7e 100644 (file)
--- a/PA.pm
+++ b/PA.pm
@@ -28,7 +28,7 @@ require Exporter;
 
 our @ISA = qw/Exporter/;
 
-our @EXPORT = qw/shipEff shipStop parseValue prettyValue calcXp findCovOpper tick_time/;
+our @EXPORT = qw/shipEff shipStop parseValue prettyValue calcXp findCovOpper/;
 
 sub shipEff {
        my ($msg,$command) = @_;
@@ -233,24 +233,4 @@ sub findCovOpper {
        $ND::server->command("notice $ND::nick The planet that cov opped you is one of: $coords");
 }
 
-sub tick_time {
-       my ($msg,$command) = @_;
-       my $tick = $ND::tick;
-       my $timezone = 'GMT';
-       if ($msg =~ /^(\d+)(?: (\S+))?/){
-               $tick = $1 if defined $1;
-               $timezone = $2 if defined $2;
-       }elsif ($msg =~ /^(\S+)/){
-               $timezone = $1;
-       }elsif ($msg){
-               $ND::server->command("notice $ND::nick syntax: .time [tick] [timezone] | Gives the time at the specied tick. Assumes GMT if no timezone is given and current tick if no tick is given.");
-               return;
-       }
-       my $query = $ND::DBH->prepare(q{SELECT date_trunc('seconds',now() + (($1 - tick()) || ' hr')::interval) AT TIME ZONE $2});
-       $query->execute($tick,$timezone);
-       my $time = $query->fetchrow_array;
-       $ND::server->command("notice $ND::nick Time at tick $ND::B$tick$ND::O, timezone $ND::B$timezone$ND::O: $ND::B$time$ND::O");
-
-}
-
 1;