AxKit::XSP::CharsetConv - AxKit XSP taglib for charset conversion


AxKit-XSP-CharsetConv documentation Contained in the AxKit-XSP-CharsetConv distribution.

Index


Code Index:

NAME

Top

AxKit::XSP::CharsetConv - AxKit XSP taglib for charset conversion

SYNOPSIS

Top

Add the CharsetConv namespace to your XSP <xsp:page> tag:

  <xsp:page
    language='Perl'
    xmlns:xsp='http://apache.org/xsp/core/v1'
    xmlns:conv='http://xmlns.knowscape.com/xsp/CharsetConv'>

And add the taglib to AxKit (via httpd.conf or .htaccess):

  AxAddXSPTaglib AxKit::XSP::CharsetConv

DESCRIPTION

Top

The XSP CharsetConv taglib implements character set conversion as implemented in iconv(), through the Apache::AxKit::CharsetConv module that comes with your standard AxKit install. You may wish to use it to convert data from misc. sources (databases, files, browser posts, the environment, etc...) that are not UTF-8 yet need to be included in the output of your XSP.

Tag Reference

There is only one tag provided by this taglib: charset-convert. It has two mandatory attributes, from and to, which are the character codes to convert (surprise) from and to.

The to attribute defaults to UTF-8, which usually makes sense. The from attribute on the other hand defaults to ISO-8859-1. While this default is very eurocentric, it would have been an arbitrary choice no matter what my choice would have been... so I picked the one that's most useful to me :-)

AUTHOR

Top

Robin Berjon, robin@knowscape.com

COPYRIGHT

Top


AxKit-XSP-CharsetConv documentation Contained in the AxKit-XSP-CharsetConv distribution.

###
# AxKit XSP taglib for character conversion
# Robin Berjon <robin@knowscape.com>
# 03/08/2001 - v0.02
# 18/07/2001 - v0.01
###

package AxKit::XSP::CharsetConv;
use strict;
use Apache::AxKit::CharsetConv  qw();

use vars qw($VERSION $NS);
$VERSION = '0.02';

use base qw(Apache::AxKit::Language::XSP);

# define the namespace we use (RDDL there one of these days)
$NS = 'http://xmlns.knowscape.com/xsp/CharsetConv';


#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
#`,`, Parser subs `,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
#```````````````````````````````````````````````````````````````````#

sub parse_start {
    my $e    = shift;
    my $tag  = shift;
    my %attr = @_;

    if ($tag eq 'charset-convert') {
        $attr{from} ||= 'iso-8859-1';
        $attr{to}   ||= 'utf-8';
        $e->append_to_script("{ #start charset-convert\n");
        $e->append_to_script("  my \$charconv = Apache::AxKit::CharsetConv->new('$attr{from}','$attr{to}');\n");
        $e->append_to_script("  my \$to_convert = ''");
    }
    else {
        die "Unknown tag $tag in CharsetConv taglib";
    }

    return '';
}

sub parse_end {
    my $e    = shift;
    my $tag  = shift;

    if ($tag eq 'charset-convert') {
        $e->append_to_script(";\n");
        $e->start_expr;
        $e->append_to_script("  \$charconv->convert(\$to_convert);");
        $e->end_expr;
        $e->append_to_script("} # end of charset-convs\n");
    }

    return '';
}

sub parse_char {
    my $e = shift;
    my $txt = shift;

    $txt =~ s/\|/\\\|/;
    $e->append_to_script(" . q|$txt|");

    return '';
}

sub parse_comment   {}
sub parse_final     {}


1;

#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#
#`,`, Documentation `,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,`,#
#```````````````````````````````````````````````````````````````````#