Changeset 14622 for lang/perl/HTML-MobileJp-Filter
- Timestamp:
- 06/26/08 07:29:09 (5 years ago)
- Location:
- lang/perl/HTML-MobileJp-Filter/trunk
- Files:
-
- 7 modified
-
Makefile.PL (modified) (1 diff)
-
lib/HTML/MobileJp/Filter.pm (modified) (3 diffs)
-
lib/HTML/MobileJp/Filter/Base.pm (modified) (2 diffs)
-
lib/HTML/MobileJp/Filter/DoCoMoCSS.pm (modified) (1 diff)
-
lib/HTML/MobileJp/Filter/DoCoMoGUID.pm (modified) (1 diff)
-
lib/HTML/MobileJp/Filter/EntityReference.pm (modified) (1 diff)
-
lib/HTML/MobileJp/Filter/FallbackImage.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/HTML-MobileJp-Filter/trunk/Makefile.PL
r14620 r14622 4 4 all_from 'lib/HTML/MobileJp/Filter.pm'; 5 5 6 requires 'Foo::Bar'; 6 requires 'Class::Trigger'; 7 requires 'UNIVERSAL::require'; 8 requires 'HTTP::MobileAgent'; 9 10 requires 'Encode'; 11 requires 'Encode::JP::Mobile'; 12 requires 'HTML::DoCoMoCSS'; 13 requires 'HTML::StickyQuery::DoCoMoGUID'; 14 requires 'HTML::Entities::ConvertPictogramMobileJp'; 7 15 8 16 build_requires 'Test::More'; 9 17 18 use_test_base; 10 19 auto_include; 11 20 -
lang/perl/HTML-MobileJp-Filter/trunk/lib/HTML/MobileJp/Filter.pm
r14597 r14622 2 2 use strict; 3 3 use warnings; 4 our $VERSION = '0.01'; 4 5 5 6 use Carp; … … 7 8 use UNIVERSAL::require; 8 9 9 use base 'Class::Accessor::Fast';10 __PACKAGE__->mk_accessors(qw( filters mobile_agent html ));11 12 10 sub new { 13 11 my ($class, %config) = @_; 14 my $self = $class->SUPER::new(\%config);12 my $self = bless \%config, $class; 15 13 16 for my $ plugin (@{ $self->filters|| [] }) {17 my $module = __PACKAGE__ .'::'. delete $plugin->{module};14 for my $filter (@{ $self->{filters} || [] }) { 15 my $module = __PACKAGE__ .'::'. $filter->{module}; 18 16 $module->require or croak $@; 19 $module->new($self, $ plugin);17 $module->new($self, $filter); 20 18 } 21 19 22 $self; 20 $self; 23 21 } 24 22 … … 26 24 my ($self, %option) = @_; 27 25 28 $self->html(""); 29 $self->{$_} = delete $option{$_} for keys %option; 26 $self->{$_} = $option{$_} for keys %option; 30 27 31 $self->call_trigger('filter ', $self);28 $self->call_trigger('filter_process'); 32 29 33 $self-> html;30 $self->{html}; 34 31 } 35 32 36 33 1; 34 __END__ 35 36 =encoding utf-8 37 38 =head1 NAME 39 40 HTML::MobileJp::Filter - Glue module for fighting Japanese mobile web 41 42 =head1 SYNOPSIS 43 44 use HTML::MobileJp::Filter; 45 use HTTP::MobileAgent; 46 use YAML; 47 48 my $filter = HTML::MobileJp::Filter->new(YAML::Load <<'...' 49 --- 50 filters: 51 - module: DoCoMoCSS 52 config: 53 base_dir: root 54 - module: DoCoMoGUID 55 - module: FallbackImage 56 config: 57 template: '<img src="%s.gif" />' 58 params: 59 - unicode_hex 60 ... 61 ); 62 63 $html = $filter->filter( 64 mobile_agent => HTTP::MobileAgent->new, 65 html => $html, 66 ); 67 68 =head1 DESCRIPTION 69 70 HTML::MobileJp::Filter is 71 72 B<Note:> This module is still alpha, its possible the API will change. 73 74 ご意見募集中です! 75 76 =head1 METHODS 77 78 =over 4 79 80 =item new( filters => [ ] ) 81 82 =item filter( mobile_agent => $ua, html => $html ) 83 84 =back 85 86 =head1 AUTHOR 87 88 Naoki Tomita E<lt>tomita@cpan.orgE<gt> 89 90 =head1 DEVELOPMENT 91 92 L<http://coderepos.org/share/browser/lang/perl/HTML-MobileJp-Filter> 93 94 #mobilejp on irc.freenode.net (I've joined as "tomi-ru") 95 96 =head1 LICENSE 97 98 This library is free software; you can redistribute it and/or modify 99 it under the same terms as Perl itself. 100 101 =head1 SEE ALSO 102 103 104 =cut -
lang/perl/HTML-MobileJp-Filter/trunk/lib/HTML/MobileJp/Filter/Base.pm
r14597 r14622 4 4 5 5 use base 'Class::Accessor::Fast'; 6 __PACKAGE__->mk_accessors(qw( config ));6 __PACKAGE__->mk_accessors(qw( mobile_agent config )); 7 7 8 8 sub new { 9 my ($class, $ provider, $config) = @_;9 my ($class, $c, $config) = @_; 10 10 my $self = $class->SUPER::new($config); 11 12 $provider->add_trigger(filter => sub { 13 $self->filter(@_); 11 12 $c->add_trigger(filter_process => sub { 13 my $c = shift; 14 15 $self->mobile_agent($c->{mobile_agent}); 16 17 my $ret = $self->filter($c->{html}); 18 19 $c->{html} = $ret if defined $ret; 14 20 }); 15 21 … … 17 23 } 18 24 25 sub filter { } 26 19 27 1; -
lang/perl/HTML-MobileJp-Filter/trunk/lib/HTML/MobileJp/Filter/DoCoMoCSS.pm
r14597 r14622 8 8 9 9 sub filter { 10 my ($self, $ filter) = @_;10 my ($self, $html) = @_; 11 11 12 unless ($ filter->mobile_agent->is_docomo) {12 unless ($self->mobile_agent->is_docomo) { 13 13 return; 14 14 } 15 15 16 16 my $inliner = HTML::DoCoMoCSS->new(base_dir => $self->config->{base_dir}); 17 18 my $html = $filter->html;19 20 17 $html = $inliner->apply($html); 21 $html = decode_utf8($html); 22 23 $filter->html($html); 18 $html = Encode::decode_utf8($html); 24 19 } 25 20 26 27 21 1; -
lang/perl/HTML-MobileJp-Filter/trunk/lib/HTML/MobileJp/Filter/DoCoMoGUID.pm
r14597 r14622 7 7 8 8 sub filter { 9 my ($self, $ filter) = @_;9 my ($self, $html) = @_; 10 10 11 unless ($ filter->mobile_agent->is_docomo) {11 unless ($self->mobile_agent->is_docomo) { 12 12 return; 13 13 } 14 15 my $guid = HTML::StickyQuery::DoCoMoGUID->new; 16 my $html = $filter->html; 17 $html = $guid->sticky( scalarref => \$html ); 18 $filter->html($html); 14 15 HTML::StickyQuery::DoCoMoGUID->new->sticky( scalarref => \$html ); 19 16 } 20 17 -
lang/perl/HTML-MobileJp-Filter/trunk/lib/HTML/MobileJp/Filter/EntityReference.pm
r14597 r14622 7 7 8 8 sub filter { 9 my ($self, $ filter) = @_;9 my ($self, $html) = @_; 10 10 11 my $html =convert_pictogram_entities(12 mobile_agent => $ filter->mobile_agent,13 html => $ filter->html,11 convert_pictogram_entities( 12 mobile_agent => $self->mobile_agent, 13 html => $html, 14 14 ); 15 16 $filter->html($html);17 15 } 18 16 -
lang/perl/HTML-MobileJp-Filter/trunk/lib/HTML/MobileJp/Filter/FallbackImage.pm
r14597 r14622 9 9 10 10 sub filter { 11 my ($self, $ filter) = @_;11 my ($self, $html) = @_; 12 12 13 unless ($ filter->mobile_agent->is_non_mobile) {13 unless ($self->mobile_agent->is_non_mobile) { 14 14 return; 15 15 } 16 16 17 my $html = $filter->{html};18 19 17 $html =~ s{(\p{InMobileJPPictograms})}{ 20 18 my $char = Encode::JP::Mobile::Character->from_unicode(ord $1); 21 sprintf $self->config->{template}, do { 22 $char->$_ for @{ $self->config->{params} || [] }; 23 }; 19 20 sprintf $self->config->{template}, 21 map { $char->$_() } @{ $self->config->{params} }; 22 24 23 }ge; 25 26 $ filter->html($html);24 25 $html; 27 26 } 28 27
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)