AltaVista-BabelFish

 view release on metacpan or  search on metacpan

BabelFish.pm  view on Meta::CPAN

            return ([split / \n\n$alta{'seperator'}\n\n /, $pre], $x, $y) 
                if wantarray;
            return  [split / \n\n$alta{'seperator'}\n\n /, $pre]
        } 
        else {
            use LWP::UserAgent;
            $alta{'form'}->{ $alta{'urltext_param'} } = $text; # url encode?
            $alta{'form'}->{ $alta{'lp_param'} }      
                = "$source{ ident $self }\_$target{ ident $self }";
    
            my $agt = new LWP::UserAgent;
            $agt->agent("Perl Module: AltaVista::BabelFish/$VERSION "
                        . '(c) Dan Muey/2005');
            my $res = $agt->post($alta{url}, $alta{form});
    
            $errstr{ ident $self } = $res->status_line() 
                if !$res->is_success();
            return undef if !$res->is_success();
            my $cnt = $res->content();
    
            my ($parse_me) = $cnt      
                =~ m/\Q$alta{'pre'}\E(.*)\Q$alta{'pst'}\E/si;
            my ($tr)       = $parse_me 
                =~ m/\Q$alta{'q_pre'}\E([^\"]*)\Q$alta{'q_pst'}\E/si;
            my ($k)        = $parse_me 
                =~ m/\Q$alta{'kls_pre'}\E([^\"]*)\Q$alta{'kls_pst'}\E/si;
            my ($i)        = $parse_me 
                =~ m/\Q$alta{'ienc_pre'}\E([^\"]*)\Q$alta{'ienc_pst'}\E/si;
            # set to empty instead of undef to avoid warnings
            $tr = '' if !defined $tr;
            $k  = '' if !defined $k;
            $i  = '' if !defined $i;

            $self->set_source( $current_source ) if $_source;
            $self->set_target( $current_target ) if $_target;

            return ($tr, $k, $i) if wantarray;
            return $tr;
        }
    }
    
    sub get_languages_hashref { 
        return \%lang;
    }
    
    sub is_latest_version {
        my($self) = @_;
        my $ident = ident $self;
        my ($cpan, $ior) = ('', '');
    
        eval 'use CPAN;';
    
        if($@) { 
            $errstr{ $ident } = $@; 
            return 0; 
        }
    
        eval <<'REDIRECT_END';
            use IO::Redirect;
            $ior = IO::Redirect->new();
            $ior->redirect_stdout_stderr(\$cpan);
REDIRECT_END
    
        my $mod = CPAN::Shell->expand('Module', 'AltaVista::BabelFish');
    
        if(defined $mod) {
            if($VERSION eq $mod->cpan_version) {
                if(ref $ior) {
                    $ior->un_redirect_stdout_stderr();
                }
                return 1;
            }
            else {
                $errstr{ $ident } = "Installed Version: $VERSION\nLatest "
                                    . 'version: ' . $mod->cpan_version();
            }
        } 
        else {
            $errstr{ $ident } 
                = "Undefined CPAN Object. Here is what CPAN said:\n$cpan" 
                    if ref $ior;
            $errstr{ $ident } = "Undefined CPAN Object." if !ref $ior;
        }
    
        if(ref $ior) { 
            $ior->un_redirect_stdout_stderr();
        }
    
        return;
    }
    
    sub fishinfo {
        my($self, $use_native) = @_; 
        my $title 
            = "AltaVista::BabelFish Perl module $VERSION by Daniel Muey";
        my $url   = 'http://search.cpan.org/~dmuey/AltaVista-BabelFish-'
                  . "$VERSION/BabelFish.pm";
        my $html  = -t STDIN ? 0 : 1;
        my $fish  = AltaVista::BabelFish->new;  
        my $out   = $html 
            ? qq(<h3>$title</h3>\n)
              . qq(<p><a target="_blank" href="$url">Click here</a>)
              . " for documentation.</p>\n<ul>\n"
            : "$title\nSee `perldoc AltaVista::BabelFish` or $url"
              . " for documentation\n\n";

        for my $src (sort @{ $fish->get_source_languages_arrayref() }) {
            my $native  = $use_native && $src ne 'en' 
                          ? $fish->get_native($src) : '';
            my $english = $fish->get_english($src);
            $native = $native && $native ne $english ? "[$native] " : '';
            $out .= "  <li>" if $html;
            $out .= "$native$english ($src) translates into:\n"; 
            $out .= "     <ul>\n" if $html;
            for(sort @{ $fish->get_target_languages_arrayref($src) }) {
                $out .= "      <li>\n" if $html;
                $out .= "        " . $fish->get_english($_) . " ($_)\n";
                $out .= "      </li>\n" if $html;
            }
            $out .= "     </ul>\n" if $html;   
            $out .= "  </li>\n" if $html;
            $out .= "\n";
        } 

        $out .= "</ul>\n" if $html;

        if(!defined wantarray) {
            print $out;
        } 
        else { 
            return $out; 
        } 
    }

} # end encapsulation of inside out object
    
1; # yes I'd like to do "42;" but warnings doesn't like it :)
    
__END__
    
=head1 NAME
    
AltaVista::BabelFish - Perl OO interface to http://babelfish.altavista.com
   
=head1 SYNOPSIS
    



( run in 2.132 seconds using v1.01-cache-2.11-cpan-5b529ec07f3 )