| Text-CSV-Encoded documentation | Contained in the Text-CSV-Encoded distribution. |
Text::CSV::Encoded::Coder::Base - Interface for Text::CSV::Encoded coder base class
package Text::CSV::Encoded::Coder::YourCoder;
use base qw( Text::CSV::Encoded::Coder::Base );
sub decode {
...
}
sub encode {
...
}
sub upgrade {
...
}
sub decode_fields_ref {
...
}
sub encode_fields_ref {
...
}
This module is used by Text::CSV::Encoded internally.
( $self, $encoding, $str ) = @_;
....
return $decoded_str;
Takes an encoding and a CSV string.
It must return a Perl string decoded in $encoding.
In Perl 5.8 or later, if $enc is undef or false, the encoding should be utf8.
( $self, $encoding, $str ) = @_;
....
return $encoded_str;
Takes an encoding and a Perl string.
It must return a CSV string encoded in $encoding.
In Perl 5.8 or later, if $enc is undef or false, the encoding should be utf8.
( $self, $encoding, $arrayref ) = @_;
Takes an encoding and an array reference. It must decoded each array entries in $encoding.
( $self, $encoding, $arrayref ) = @_;
Takes an encoding and an array reference. It must encoded each array entries in $encoding.
( $self, $str ) = @_;
In Perl 5.8 or later, it is expected to do utf8::upgrade against $str.
In older versions, this method may be meaningless and there is no need to implement.
See to utf8.
Setter/Getter for an argument passing to encode.
$coder->encode_check_value( Encode::FB_PERLQQ );
Setter/Getter for an argument passing to decode.
$coder->encode_check_value( Encode::FB_PERLQQ );
Use with Jcode.
package Text::CSV::Encoded::Coder::Jcode;
use strict;
use base qw( Text::CSV::Encoded::Coder::Base );
use Jcode ();
my $Jcode = Jcode->new;
my %alias = (
'shiftjis' => 'sjis',
'euc-jp' => 'euc',
'sjis' => 'sjis',
'euc' => 'euc',
);
sub decode {
my ( $self, $encoding, $str ) = @_;
my $enc = $alias{ $encoding };
$Jcode->set( $str, $enc )->euc;
}
sub encode {
my ( $self, $encoding, $str ) = @_;
my $enc = $alias{ $encoding };
$Jcode->set( $str, 'euc' )->$enc();
}
sub decode_fields_ref {
my ( $self, $encoding, $arrayref ) = @_;
my $enc = $alias{ $encoding };
for ( @$arrayref ) {
$_ = $Jcode->set( $_, $enc )->euc;
}
}
sub encode_fields_ref {
my ( $self, $encoding, $arrayref ) = @_;
my $enc = $alias{ $encoding };
for ( @$arrayref ) {
$_ = $Jcode->set( $_, 'euc' )->$enc();
}
}
Makamaka Hannyaharamitu, <makamaka[at]cpan.org>
Copyright 2008-2010 by Makamaka Hannyaharamitu
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Text-CSV-Encoded documentation | Contained in the Text-CSV-Encoded distribution. |
package Text::CSV::Encoded::Coder::Base; use strict; BEGIN { $Text::CSV::Encoded::Coder::Base::VERSION = '0.02'; } sub new { my $class = shift; bless {}, $class; } sub upgrade { 0; } sub encode { my ( $self, $encoding, $str ) = @_; $str; } sub decode { my ( $self, $encoding, $str ) = @_; $str; } sub decode_fields_ref { my ( $self, $encoding, $arrayref ) = @_; } sub encode_fields_ref { my ( $self, $encoding, $arrayref ) = @_; } sub encode_check_value { $_[0]->{ encode_check_value } = $_[1] if @_ > 1; $_[0]->{ encode_check_value } || 0; } sub decode_check_value { $_[0]->{ decode_check_value } = $_[1] if @_ > 1; $_[0]->{ decode_check_value } || 0; } 1; __END__