Tripletail

 view release on metacpan or  search on metacpan

lib/Tripletail/CharConv.pm  view on Meta::CPAN

			$UNICODE_JAPANESE_CODE{$code} = 1;
		}
	}

	$INSTANCE;
}

sub _charconv {
    my $this = shift;
    my $str  = shift;
    my $from = shift;
    my $to   = shift;

    if (!defined $str) {
        die "TL#charconv: arg[1] is not defined. (第1引数が指定されていません)\n";
    }
    elsif (ref $str) {
        die "TL#charconv: arg[1] is a reference. [$str] (第1引数がリファレンスです)\n";
    }

    if (!defined $from) {
        $from = 'auto';
    }
    elsif (ref $from) {
        die "TL#charconv: arg[2] is a reference. [$from] (第2引数がリファレンスです)\n";
    }

    if (!defined $to) {
        $to = 'UTF-8';
    }
    elsif (ref $to) {
        die "TL#charconv: arg[3] is a reference. [$to] (第3引数がリファレンスです)\n";
    }

    my $fromuj = $MAP_ENCODE_TO_UNIJP{$from} ? $MAP_ENCODE_TO_UNIJP{$from} : $from;
    my $touj   = $MAP_ENCODE_TO_UNIJP{$to  } ? $MAP_ENCODE_TO_UNIJP{$to  } : $to;

    if ($UNICODE_JAPANESE_CODE{$fromuj} and $UNICODE_JAPANESE_CODE{$touj}) {
        # 両方ともUniJPのサポート内ならUniJPで変換
        return Unicode::Japanese->new($str, $fromuj)->conv($touj);
    }
    elsif ($UNICODE_JAPANESE_CODE{$fromuj}) {
        # 片方サポートなのでutf8経由で変換
        my $utf8 = Unicode::Japanese->new($str, $fromuj)->utf8;
        return Encode::find_encoding($to)->encode($utf8);
    }
    elsif ($UNICODE_JAPANESE_CODE{$touj}) {
        # 片方サポートなのでutf8経由で変換
        my $utf8 = Encode::find_encoding($from)->decode($str);
        return Unicode::Japanese->new($str, 'utf8')->conv($touj);
    }
    else {
        # 両方ともサポート外
        my $utf8 = Encode::find_encoding($from)->decode($str);
        return Encode::find_encoding($to)->encode($utf8);
    }
}

sub __new {
    my $class = shift;
    my $this  = bless {} => $class;

    return $this;
}


__END__

=encoding utf-8

=for stopwords
	YMIRLINK

=head1 NAME

Tripletail::CharConv - 内部クラス

=head1 DESCRIPTION

L<Tripletail> によって内部的に使用される。

=head1 SEE ALSO

L<Tripletail>

=head1 AUTHOR INFORMATION

=over 4

Copyright 2006 YMIRLINK Inc.

This framework is free software; you can redistribute it and/or modify it under the same terms as Perl itself

このフレームワークはフリーソフトウェアです。あなたは Perl と同じライセンスの 元で再配布及び変更を行うことが出来ます。

Address bug reports and comments to: tl@tripletail.jp

HP : http://tripletail.jp/

=back

=cut



( run in 0.925 second using v1.01-cache-2.11-cpan-e1769b4cff6 )