From 92cf039c09fdd9bc72d8eaee6095175cd04160ea Mon Sep 17 00:00:00 2001 From: dms Date: Tue, 20 Feb 2001 13:00:40 +0000 Subject: [PATCH] - reformatted totally - 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 | 215 ++++++++++++++++++++++------------------- 1 file changed, 113 insertions(+), 102 deletions(-) diff --git a/src/Factoids/Update.pl b/src/Factoids/Update.pl index 1a2cf3a..df9a388 100644 --- a/src/Factoids/Update.pl +++ b/src/Factoids/Update.pl @@ -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 = " 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 =~ /^ 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 = " 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; -- 2.39.2