[Rt-devel] Why two IsRTAddress() and CullRTAddresses()?
Ruslan Zakirov
ruslan.zakirov at gmail.com
Tue Dec 19 17:36:02 EST 2006
Check out 3.6.3RC2, there is some changes in these functions, but
still we should get rid of all duplicates.
On 12/19/06, Petter Reinholdtsen <pere at hungry.com> wrote:
>
> In RT 3.6.1 there seem to be two functions using the
> $RT::RTAddressRegexp regular expression. Both
> RT::EmailParser::IsRTAddress() and RT::Interface::Email::IsRTAddress()
> exists. Why? The latter do not seem to be used. Should it be
> deleted?
>
> I'm looking into rewriting it to get it to look up addresses in LDAP
> to check if they are forwarded to the RT server, and found it strange
> that I need to override two functions to do this. CullRTAddresses()
> is duplicated as well. The only functional difference seem to be that
> the ones in EmailParser.pm take $self as the first argument and the
> one in Email.pm accept undef.
>
> lib/RT/EmailParser.pm:
>
> sub IsRTAddress {
> my $self = shift;
> my $address = shift;
>
> # Example: the following rule would tell RT not to Cc
> # "tickets at noc.example.com"
> if ( defined($RT::RTAddressRegexp) &&
> $address =~ /$RT::RTAddressRegexp/i ) {
> return(1);
> } else {
> return (undef);
> }
> }
> sub CullRTAddresses {
> my $self = shift;
> my @addresses= (@_);
> my @addrlist;
>
> foreach my $addr( @addresses ) {
> # We use the class instead of the instance
> # because sloppy code calls this method
> # without a $self
> push (@addrlist, $addr) unless RT::EmailParser->IsRTAddress($addr);
> }
> return (@addrlist);
> }
>
>
> lib/RT/Interface/Email.pm:
>
> sub IsRTAddress {
> my $address = shift || '';
>
> # Example: the following rule would tell RT not to Cc
> # "tickets at noc.example.com"
> if ( defined($RT::RTAddressRegexp)
> && $address =~ /$RT::RTAddressRegexp/i )
> {
> return (1);
> } else {
> return (undef);
> }
> }
>
> sub CullRTAddresses {
> return ( grep { IsRTAddress($_) } @_ );
> }
>
> The CullRTAddresses() version in lib/RT/Interface/Email.pm is more
> elegant than the one in lib/RT/EmailParser.pm. I suggest to rewrite
> them like this:
>
> lib/RT/EmailParser.pm:
>
> sub IsRTAddress {
> [no change]
> }
> sub CullRTAddresses {
> my $self = shift;
>
> # We use the class instead of the instance because sloppy code
> # calls this method without a $self
> return ( grep { RT::EmailParser->IsRTAddress($_) } @_ );
> }
>
> lib/RT/Interface/Email.pm (or just remove them because they are
> unused):
>
> sub IsRTAddress {
> my $address = shift || '';
> return RT:EmailParser->IsRTAddress($address);
> }
>
> sub CullRTAddresses {
> return RT:EmailParser->CullRTAddresses(@_);
> }
>
> Is this a good idea?
>
> Friendly,
> --
> Petter Reinholdtsen
> _______________________________________________
> List info: http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-devel
>
--
Best regards, Ruslan.
More information about the Rt-devel
mailing list