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


Text-CSV-Encoded documentation  | view source Contained in the Text-CSV-Encoded distribution.

Index


NAME

Top

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

SYNOPSIS

Top

    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

Top

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

INTERFACS

Top

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

Top

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

Top

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

COPYRIGHT AND LICENSE

Top


Text-CSV-Encoded documentation  | view source Contained in the Text-CSV-Encoded distribution.