]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Factoids/Update.pl
- I broke maths when I tried to fix "999!" - fixed :-)
[infobot.git] / src / Factoids / Update.pl
index df9a38854a8c5675f3756e99c9957de381ad219c..5fa7c4edceef36f11ce89d12cd618bcb5309fddf 100644 (file)
@@ -49,12 +49,12 @@ sub update {
     }
 
     # also checking.
-    my $also    = ($rhs =~ s/^(-?)also //i);
-    &DEBUG("1=>$1");
+    my $also    = ($rhs =~ s/^-?also //i);
     my $also_or = ($also and $rhs =~ s/\s+(or|\|\|)\s+//);
 
     # freshmeat
     if (&IsChanConf("freshmeatForFactoid")) {
+       # todo: "name" is invalid for fm ][
        if (&dbGet("freshmeat", "name", $lhs, "name")) {
            &msg($who, "permission denied. (freshmeat)");
            &status("alert: $who wanted to teach me something that freshmeat already has info on.");
@@ -62,13 +62,42 @@ sub update {
        }
     }
 
+    # factoid arguments handler.
+    if (&IsChanConf("factoidArguments") and $lhs =~ /\$/) {
+       &status("Update: Factoid Arguments found.");
+       &status("Update: orig lhs => '$lhs'.");
+       &status("Update: orig rhs => '$rhs'.");
+
+       my @list;
+       my $count = 0;
+       $lhs =~ s/^/CMD: /;
+       while ($lhs =~ s/\$(\S+)/(.*?)/) {
+           push(@list, "\$$1");
+           $count++;
+           last if ($count >= 10);
+       }
+
+       if ($count >= 10) {
+           &msg($who, "error: could not SAR properly.");
+           &DEBUG("error: lhs => '$lhs'.");
+           &DEBUG("error: rhs => '$rhs'.");
+           return;
+       }
+
+       my $z = join(',',@list);
+       $rhs =~ s/^/($z): /;
+
+       &status("Update: new  lhs => '$lhs'.");
+       &status("Update: new  rhs => '$rhs'.");
+    }
+
     # the fun begins.
     my $exists = &getFactoid($lhs);
 
     if (!$exists) {
        # nice 'are' hack (or work-around).
        if ($mhs =~ /^are$/i and $rhs !~ /<\S+>/) {
-           &DEBUG("Update: 'are' hack detected.");
+           &status("Update: 'are' hack detected.");
            $mhs = "is";
            $rhs = "<REPLY> are ". $rhs;
        }
@@ -106,12 +135,16 @@ sub update {
 #          if ($exists =~ s/\,\s*$/,  /) {
            if ($exists =~ /\,\s*$/) {
                &DEBUG("current has trailing comma, just append as is");
+               &DEBUG("Up: exists => $exists");
+               &DEBUG("Up: rhs    => $rhs");
                # $rhs =~ s/^\s+//;
                # $rhs = $exists." ".$rhs;      # keep comma.
            }
 
            if ($exists =~ /\.\s*$/) {
                &DEBUG("current has trailing period, just append as is with 2 WS");
+               &DEBUG("Up: exists => $exists");
+               &DEBUG("Up: rhs    => $rhs");
                # $rhs =~ s/^\s+//;
                # use ucfirst();?
                # $rhs = $exists."  ".$rhs;     # keep comma.