HTML-MobileJp-Filter

 view release on metacpan or  search on metacpan

lib/HTML/MobileJp/Filter/DoCoMoCSS.pm  view on Meta::CPAN

use Any::Moose;

with 'HTML::MobileJp::Filter::Role';

has '+config' => (
    default => sub {{
        base_dir                => '',
        xml_declaration_replace => 1,
        xml_declaration         => <<'END'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd">
END
    ,
    }},
);

use Encode;
use HTML::DoCoMoCSS;

sub filter {
    my ($self, $content) = @_;

lib/HTML/MobileJp/Filter/DoCoMoCSS.pm  view on Meta::CPAN

  - module: EntityReference
    config:
      base_dir: /path/to/documentroot

=head1 CONFIG AND DEFAULT VALUES

  base_dir                => '',
  xml_declaration_replace => 1,
  xml_declaration         => <<'END'
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd">
  END

XML 宣言や DTD がないと文字が全部実体参照になったりうまく parse できないので
ヘッダを付け替えることで HTML::DoCoMoCSS の中の XML::libXML に指示をしています。

TODO のHTML::MobileJp::Filter 側で XML オブジェクトを持つようになった際に
もっと良い方法で指定できるようになる予定です。

=head1 SEE ALSO

t/01_docomo.t  view on Meta::CPAN

<head>
<link rel="stylesheet" href="/01_docomo/foo.css" />
</head>
<body>
<a href="/foo">foo</a>
<div class="title">bar</div>
</body>
</html>
--- expected
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN" "i-xhtml_4ja_10.dtd">
<html>
<head>
<link rel="stylesheet" href="/01_docomo/foo.css"/>
</head>
<body style="background:orange">
<a href="/foo?guid=ON">foo</a>
<div class="title" style="color:red">bar</div>
</body>
</html>



( run in 2.535 seconds using v1.01-cache-2.11-cpan-119454b85a5 )