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 )