The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.