package Sledge::Plugin::HTML2HDML; use strict; use vars qw($VERSION); $VERSION = 0.01; use File::Temp qw(tempdir tempfile); use HTTP::MobileAgent; sub import { my $class = shift; my $pkg = caller; $pkg->register_hook( AFTER_DISPATCH => sub { my $self = shift; my $agent = HTTP::MobileAgent->new(); if ($agent->is_ezweb && $agent->is_wap1) { $self->add_filter(\&filter_html2hdml); } }, ); } sub filter_html2hdml { my($page, $content) = @_; $page->r->content_type('text/x-hdml; charset=Shift_JIS'); my $command = eval { $page->create_config->html2hdml } || "html2hdml"; return _pipe_out($command, $content); } sub _pipe_out { my($command, $content) = @_; # XXX why not IPC::Open2? my $dir = tempdir(CLEANUP => 1); my($fh, $filename) = tempfile(DIR => $dir); print $fh $content; close $fh; return qx($command $filename); } 1; __END__ =head1 NAME Sledge::Plugin::HTML2HDML - html2hdml filter =head1 SYNOPSIS package Your::Pages; use Sledge::Plugin::HTML2HDML; # when html2hdml is not in your PATH package Your::Config; $C{HTML2HDML} = "/path/to/html2hdml"; =head1 DESCRIPTION Sledge::Plugin::HTML2HDML は、端末がEZweb WAP/1.0 対応機の場合に、Cフィルタを通し、HTTPレスポンスヘッダを適切に返すプラグインです。 動作にはCプログラムと、Cモジュールが必要です。 html2hdml https://sourceforge.jp/projects/html2hdml/ HTTP::MobileAgent http://search.cpan.org/dist/HTTP-MobileAgent/ =head1 AUTHOR Tatsuhiko Miyagawa Emiyagawa@edge.co.jpE This library is free software; you can redistribute it and/or modify it under the same terms as Sledge itself. =head1 SEE ALSO L, L =cut