NAME

Text::CSV::Encoded::Coder::Base - Interface for Text::CSV::Encoded coder base class

SYNOPSIS

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 {
    ...
}

DESCRIPTION

This module is used by Text::CSV::Encoded internally.

INTERFACS

decode

( $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.

encode

( $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.

decode_fields_ref

( $self, $encoding, $arrayref ) = @_;

Takes an encoding and an array reference. It must decoded each array entries in $encoding.

encode_fields_ref

( $self, $encoding, $arrayref ) = @_;

Takes an encoding and an array reference. It must encoded each array entries in $encoding.

upgrade

( $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.

encode_check_value

Setter/Getter for an argument passing to encode.

$coder->encode_check_value( Encode::FB_PERLQQ );

decode_check_value

Setter/Getter for an argument passing to decode.

$coder->encode_check_value( Encode::FB_PERLQQ );

EXAMPLE

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();
    }
}

AUTHOR

Makamaka Hannyaharamitu, <makamaka[at]cpan.org>

COPYRIGHT AND LICENSE

Copyright 2008-2013 by Makamaka Hannyaharamitu

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