Text-Kakasi
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
#
# $Id: Kakasi.pm,v 2.4 2003/05/26 10:42:01 dankogai Exp $
package Text::Kakasi;
use strict;
# use warnings; # 5.00503 does not have one!
use Carp;
require Exporter;
require DynaLoader;
use vars qw($VERSION $DEBUG @ISA @EXPORT_OK %EXPORT_TAGS $HAS_ENCODE);
$VERSION = do { my @r = (q$Revision: 2.4 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
@ISA = qw(Exporter DynaLoader);
@EXPORT_OK = qw(getopt_argv do_kakasi close_kanwadict);
%EXPORT_TAGS = (all => [qw(getopt_argv do_kakasi close_kanwadict)]);
bootstrap Text::Kakasi $VERSION;
$HAS_ENCODE = load_encode();
sub load_encode{
$INC{Encode} and return 1;
if ($] >= 5.008){
eval { require Encode };
$@ and return 0;
eval {
Encode->import(qw/find_encoding from_to _utf8_on _utf8_off/)
};
return $@ ? 0 : 1;
}else{
return 0;
}
}
sub new{
my $thingy = shift;
my $class = ref $thingy ? ref $thingy : $thingy;
my $self = bless {} => $class;
@_ and $self->set(@_);
return $self
}
my %k2p =
(
oldjis => "7bit-jis",
newjis => "7bit-jis",
dec => "euc-jp",
euc => "euc-jp",
sjis => "shiftjis",
);
sub set{
my $self = shift;
my @argv;
if ($HAS_ENCODE){
for (@_){
if (/(-[io])\s*(\S+)/){
my $name = $k2p{lc($2)} || $2;
my $enc = find_encoding($name);;
unless (ref $enc){
carp "encoding $name is not supported";
next;
}
$self->{$1} = $enc->name;
# push @argv, "$1euc";
}else{
push @argv, $_;
}
}
}else{
@argv = @_;
}
my $error = getopt_argv(@argv);
$error and
carp "Kakasi returned $error for ", join " " => @argv;
$self->{error} = $error;
$self->{argv} = [ @argv ];
return $self;
}
sub getopt_argv{
my @argv = @_;
$argv[0] and $argv[0] eq 'kakasi' or unshift @argv, 'kakasi';
xs_getopt_argv(@argv);
}
sub error{ shift->{error} };
sub get{
my $self = shift;
my $str = shift;
if ($HAS_ENCODE){
if ($self->{'-i'}){
$self->{'-i'} eq 'utf8' and _utf8_off($str);
from_to($str, $self->{'-i'} =>'eucjp');
}
}
$str = do_kakasi($str);
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.404 second using v1.00-cache-2.02-grep-82fe00e-cpan-d29e8ade9f55 )