]> git.donarmstrong.com Git - infobot.git/commitdiff
- reformatted totally
authordms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Tue, 20 Feb 2001 13:00:40 +0000 (13:00 +0000)
committerdms <dms@c11ca15a-4712-0410-83d8-924469b57eb5>
Tue, 20 Feb 2001 13:00:40 +0000 (13:00 +0000)
- added preliminary append-to-linked-factoid support.
- all return calls now return appropriately.

git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@410 c11ca15a-4712-0410-83d8-924469b57eb5

src/Factoids/Update.pl

index 1a2cf3a02f3d951d8e2fc6fd4fef376d9c49fc51..df9a38854a8c5675f3756e99c9957de381ad219c 100644 (file)
@@ -11,24 +11,26 @@ if (&IsParam("useStrict")) { use strict; }
 sub update {
     my($lhs, $mhs, $rhs) = @_;
 
-    $lhs =~ s/^i (heard|think) //i;
-    $lhs =~ s/^some(one|1|body) said //i;
-    $lhs =~ s/\s+/ /g;
+    for ($lhs) {
+       s/^i (heard|think) //i;
+       s/^some(one|1|body) said //i;
+       s/\s+/ /g;
+    }
 
     # locked.
     return if (&IsLocked($lhs) == 1);
 
     # profanity.
     if (&IsParam("profanityCheck") and &hasProfanity($rhs)) {
-       &msg($who, "please, watch your language.");
-       return;
+       &performReply("please, watch your language.");
+       return 1;
     }
 
     # teaching.
     if (&IsFlag("t") ne "t") {
        &msg($who, "permission denied.");
        &status("alert: $who wanted to teach me.");
-       return;
+       return 1;
     }
 
     # invalid verb.
@@ -38,136 +40,145 @@ sub update {
     }
 
     # check if the arguments are too long to be stored in our table.
-    if (length($lhs) > $param{'maxKeySize'} or 
-       length($rhs) > $param{'maxDataSize'})
-    {
+    my $toolong        = 0;
+    $toolong++ if (length $lhs > $param{'maxKeySize'});
+    $toolong++ if (length $rhs > $param{'maxDataSize'});
+    if ($toolong) {
        &performAddressedReply("that's too long");
-       return;
+       return 1;
     }
 
-    #
-    # lets do it...
-    #
-
-    my $also    = ($rhs =~ s/^also //i);
+    # also checking.
+    my $also    = ($rhs =~ s/^(-?)also //i);
+    &DEBUG("1=>$1");
     my $also_or = ($also and $rhs =~ s/\s+(or|\|\|)\s+//);
 
+    # freshmeat
     if (&IsChanConf("freshmeatForFactoid")) {
        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.");
-           return;
+           return 1;
        }
     }
 
-    if (my $exists = &getFactoid($lhs)) {      # factoid exists.
-       if ($exists eq $rhs) {
-           &performAddressedReply("i already had it that way");
-           return;
+    # 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.");
+           $mhs = "is";
+           $rhs = "<REPLY> are ". $rhs;
        }
 
-       if ($also) {                    # 'is also'.
-           if ($also_or) {                     # 'is also ||'.
-               $rhs = $exists.' || '.$rhs;
-           } else {
-#              if ($exists =~ s/\,\s*$/,  /) {
-               if ($exists =~ /\,\s*$/) {
-                   &DEBUG("current has trailing comma, just append as is");
-                   # $rhs =~ s/^\s+//;
-                   # $rhs = $exists." ".$rhs;  # keep comma.
-               }
+       &status("enter: <$who> \'$lhs\' =$mhs=> \'$rhs\'");
+       $count{'Update'}++;
 
-               if ($exists =~ /\.\s*$/) {
-                   &DEBUG("current has trailing period, just append as is with 2 WS");
-                   # $rhs =~ s/^\s+//;
-                   # use ucfirst();?
-                   # $rhs = $exists."  ".$rhs; # keep comma.
-               }
+       &performAddressedReply("okay");
 
-               if ($rhs =~ /^[A-Z]/) {
-                   if ($rhs =~ /\w+\s*$/) {
-                       &status("auto insert period to factoid.");
-                       $rhs = $exists.".  ".$rhs;
-                   } else {    # '?' or '.' assumed at end.
-                       &status("orig factoid already had trailing symbol; not adding period.");
-                       $rhs = $exists."  ".$rhs;
-                   }
-               } elsif ($exists =~ /[\,\.\-]\s*$/) {
-                   &VERB("U: current has trailing symbols; inserting whitespace + new.",2);
-                   $rhs = $exists." ".$rhs;
-               } elsif ($rhs =~ /^\./) {
-                   &VERB("U: new text has ^.; appending directly",2);
-                   $rhs = $exists.$rhs;
-               } else {
-                   $rhs = $exists.', or '.$rhs;
-               }
-           }
+       &setFactInfo($lhs,"created_by", $nuh);
+       &setFactInfo($lhs,"created_time", time());
+       &setFactInfo($lhs,"factoid_value", $rhs);
 
-           # max length check again.
-           if (length($rhs) > $param{'maxDataSize'}) {
-               if (length($rhs) > length($exists)) {
-                   &performAddressedReply("that's too long");
-                   return;
-               } else {
-                   &status("Update: new length is still longer than maxDataSize but less than before, we'll let it go.");
-               }
-           }
+       if (!defined $rhs or $rhs eq "") {
+           &ERROR("Update: rhs1 == NULL.");
+       }
+
+       return 1;
+    }
+
+    # factoid exists.
+    if ($exists eq $rhs) {
+       &performAddressedReply("i already had it that way");
+       return 1;
+    }
 
-           &performAddressedReply("okay");
+    if ($also) {                       # 'is also'.
+       if ($exists =~ /^<REPLY> see /i) {
+           &DEBUG("todo: append to linked factoid.");
+       }
 
-           $count{'Update'}++;
-           &status("update: <$who> \'$lhs\' =$mhs=> \'$rhs\'; was \'$exists\'");
-           &AddModified($lhs,$nuh);
-           &setFactInfo($lhs, "factoid_value", $rhs);
+       if ($also_or) {                 # 'is also ||'.
+           $rhs = $exists.' || '.$rhs;
+       } else {
+#          if ($exists =~ s/\,\s*$/,  /) {
+           if ($exists =~ /\,\s*$/) {
+               &DEBUG("current has trailing comma, just append as is");
+               # $rhs =~ s/^\s+//;
+               # $rhs = $exists." ".$rhs;      # keep comma.
+           }
 
-           if (!defined $rhs or $rhs eq "") {
-               &ERROR("Update: rhs1 == NULL.");
+           if ($exists =~ /\.\s*$/) {
+               &DEBUG("current has trailing period, just append as is with 2 WS");
+               # $rhs =~ s/^\s+//;
+               # use ucfirst();?
+               # $rhs = $exists."  ".$rhs;     # keep comma.
            }
-       } else {                                # not "also"
-           if ($correction_plausible) {        # "no, blah is ..."
-               my $author = &getFactInfo($lhs, "created_by") || "";
 
-               if (IsFlag("m") ne "m" and $author !~ /^\Q$who\E\!/i) {
-                   &msg($who, "you can't change that factoid.");
-                   return;
+           if ($rhs =~ /^[A-Z]/) {
+               if ($rhs =~ /\w+\s*$/) {
+                   &status("auto insert period to factoid.");
+                   $rhs = $exists.".  ".$rhs;
+               } else {        # '?' or '.' assumed at end.
+                   &status("orig factoid already had trailing symbol; not adding period.");
+                   $rhs = $exists."  ".$rhs;
                }
+           } elsif ($exists =~ /[\,\.\-]\s*$/) {
+               &VERB("U: current has trailing symbols; inserting whitespace + new.",2);
+               $rhs = $exists." ".$rhs;
+           } elsif ($rhs =~ /^\./) {
+               &VERB("U: new text has ^.; appending directly",2);
+               $rhs = $exists.$rhs;
+           } else {
+               $rhs = $exists.', or '.$rhs;
+           }
+       }
 
-               &performAddressedReply("okay");
+       # max length check again.
+       if (length $rhs > $param{'maxDataSize'}) {
+           if (length $rhs > length $exists) {
+               &performAddressedReply("that's too long");
+               return 1;
+           } else {
+               &status("Update: new length is still longer than maxDataSize but less than before, we'll let it go.");
+           }
+       }
 
-               $count{'Update'}++;
-               &status("update: <$who> \'$lhs\' =$mhs=> \'$rhs\'; was \'$exists\'");
+       &performAddressedReply("okay");
 
-               &delFactoid($lhs);
-               &setFactInfo($lhs,"created_by", $nuh);
-               &setFactInfo($lhs,"created_time", time());
-               &setFactInfo($lhs,"factoid_value", $rhs);
+       $count{'Update'}++;
+       &status("update: <$who> \'$lhs\' =$mhs=> \'$rhs\'; was \'$exists\'");
+       &AddModified($lhs,$nuh);
+       &setFactInfo($lhs, "factoid_value", $rhs);
 
-               if (!defined $rhs or $rhs eq "") {
-                   &ERROR("Update: rhs1 == NULL.");
-               }
+       if (!defined $rhs or $rhs eq "") {
+           &ERROR("Update: rhs1 == NULL.");
+       }
+    } else {                           # not "also"
 
-           } else {                     # "blah is ..."
-               if ($addressed) {
-                   &performStrictReply("...but \002$lhs\002 is already something else...");
-                   &status("FAILED update: <$who> \'$lhs\' =$mhs=> \'$rhs\'");
-               }
-               return;
+       if (!$correction_plausible) {   # "no, blah is ..."
+           if ($addressed) {
+               &performStrictReply("...but \002$lhs\002 is already something else...");
+               &status("FAILED update: <$who> \'$lhs\' =$mhs=> \'$rhs\'");
            }
+           return;
        }
-    } else {                   # not exists.
 
-       # nice 'are' hack (or work-around).
-       if ($mhs =~ /^are$/i and $rhs !~ /<\S+>/) {
-           &DEBUG("Update: 'are' hack detected.");
-           $mhs = "is";
-           $rhs = "<REPLY> are ". $rhs;
-       }
+       my $author = &getFactInfo($lhs, "created_by") || "";
 
-       &status("enter: <$who> \'$lhs\' =$mhs=> \'$rhs\'");
-       $count{'Update'}++;
+       if (IsFlag("m") ne "m" and $author !~ /^\Q$who\E\!/i) {
+           &msg($who, "you can't change that factoid.");
+           return 1;
+       }
 
        &performAddressedReply("okay");
 
+       $count{'Update'}++;
+       &status("update: <$who> \'$lhs\' =$mhs=> \'$rhs\'; was \'$exists\'");
+
+       &delFactoid($lhs);
        &setFactInfo($lhs,"created_by", $nuh);
        &setFactInfo($lhs,"created_time", time());
        &setFactInfo($lhs,"factoid_value", $rhs);
@@ -177,7 +188,7 @@ sub update {
        }
     }
 
-    return "$lhs $mhs $rhs";
+    return 1;
 }
 
 1;