Acme-eng2kor
view release on metacpan or search on metacpan
Const::Fast: 0
Encode: 0
Getopt::Long: 0
HTTP::Request: 0
HTTP::Response: 0
JSON: 0
LWP::UserAgent: 0
Pod::Usage: 0
URI::Escape: 0
namespace::autoclean: 0
utf8: 0
version: v0.0.2
Makefile.PL view on Meta::CPAN
'Const::Fast' => '0',
'Encode' => '0',
'Getopt::Long' => '0',
'HTTP::Request' => '0',
'HTTP::Response' => '0',
'JSON' => '0',
'LWP::UserAgent' => '0',
'Pod::Usage' => '0',
'URI::Escape' => '0',
'namespace::autoclean' => '0',
'utf8' => '0'
},
'VERSION' => 'v0.0.2',
'test' => {
'TESTS' => 't/*.t'
}
);
unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
bin/eng2kor view on Meta::CPAN
#!/usr/bin/env perl
package eng2kor;
# ABSTRACT: App::eng2kor CLI
use strict;
use warnings;
use utf8;
use Encode qw/encode decode/;
use Pod::Usage;
use Getopt::Long;
use Acme::eng2kor;
if ( $^O =~ m/MSWin32/i ) { # for Windows
binmode STDIN, ':encoding(euc-kr)';
binmode STDOUT, ':encoding(euc-kr)';
@ARGV = map { decode( 'euc-kr', $_ ) } @ARGV;
} else {
binmode STDIN, ':encoding(UTF-8)';
binmode STDOUT, ':encoding(UTF-8)';
@ARGV = map { decode( 'utf8', $_ ) } @ARGV;
}
my %options;
GetOptions( \%options, "--src=s", "--dst=s", "--reverse", "--help", "--list" );
pod2usage( 0, -noperldoc => 1 ) if $options{help};
my $src = $options{src} || $ENV{E2K_SRC} || 'en';
my $dst = $options{dst} || $ENV{E2K_DST} || 'ko';
($src, $dst) = ($dst, $src) if $options{reverse};
die "src - ENV{E2K_SRC}: $src\ndst - ENV{E2K_DST}: $dst\n" if $options{list};
my $app = Acme::eng2kor->new(src => $src, dst => $dst);
lib/Acme/eng2kor.pm view on Meta::CPAN
package Acme::eng2kor;
# ABSTRACT: English to Korean Translator
use utf8;
use Any::Moose;
use Any::Moose '::Util::TypeConstraints';
use JSON qw/decode_json/;
use Const::Fast;
use URI::Escape qw/uri_escape_utf8/;
use HTTP::Request;
use HTTP::Response;
use LWP::UserAgent;
use namespace::autoclean;
const my $GOOGLE_TRANSLATE_API_URL => "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=%s&langpair=%s";
const my @SUPPORT_LANG_TAGS => qw/ach af ak am ar az be bem bg bh bn br bs ca co cs cy da de el en eo es et eu fa fi fo fr fy ga gd gl gn gu ha haw hi hr ht hu hy ia id ig is it iw ja jw ka kg kk km kn ko ku ky la lg ln lo lt lua lv mfe mg mi mk ml m...
subtype 'LangTags'
=> as 'Str'
lib/Acme/eng2kor.pm view on Meta::CPAN
sub translate {
my ($self, $word) = @_;
map { s/^\s+//; s/\s+$// } $word if defined $word;
return $self->_google_translate($word);
}
sub _google_translate {
my ($self, $word) = @_;
$self->text($word) if defined $word;
my $text = uri_escape_utf8($self->text);
my $escaped_uri = sprintf($GOOGLE_TRANSLATE_API_URL, $text, $self->src . '|' . $self->dst);
my $json = $self->get_json($escaped_uri);
$self->translated($json->{responseData}{translatedText});
return $json;
}
sub get_json {
my ($self, $url) = @_;
my $req = HTTP::Request->new( GET => $url );
lib/Acme/eng2kor.pm view on Meta::CPAN
=head1 NAME
Acme::eng2kor - English to Korean Translator
=head1 VERSION
version v0.0.2
=head1 SYNOPSIS
use utf8;
use Acme::eng2kor;
binmode STDOUT, ':encoding(UTF-8)';
my $app = Acme::eng2kor->new;
$app->translate('hello');
print $app->text, "\n"; # hello
print $app->translated, "\n"; # ìë
íì¸ì
=head1 DESCRIPTION
Yet Another Translator
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use Acme::eng2kor;
use Test::More tests => 7;
my $app;
ok( $app = Acme::eng2kor->new, 'create new instance');
is( $app->src, 'en', 'src default');
is( $app->dst, 'ko', 'dst default');
$app->text('hello');
is( $app->text, 'hello', 'set text correct');
$app->src('ko');
$app->dst('en');
( run in 0.774 second using v1.01-cache-2.11-cpan-49f99fa48dc )