| HTML-MobileJp-Filter documentation | Contained in the HTML-MobileJp-Filter distribution. |
HTML::MobileJp::Filter::PictogramFallback - PC の場合の絵文字の代替表現
- module: PictogramFallback
config:
template: <img src="/img/pictogram/%s.gif" />
params:
- unicode_hex
template => '', # sprintf format params => [], # Encode::JP::Mobile::Charnames method names
params で Encode::JP::Mobile::Charnames のメソッドとは別に特別に 使えるものは以下のとおりです。
- module: PictogramFallback
config:
template: %s
params:
- fallback_name
fallback_name('I') か fallback_name('E') か fallback_name('V') を
返します。(>3<) のように出ます。
- module: PictogramFallback
config:
template: <img src="/img/pictogram/%s.gif" alt="%s" />
params:
- unicode_hex
- fallback_name_htmlescape
<img src="/img/pictogram/ECA2.gif" alt="(&gt;3&lt;)" /> のように出ます。
Naoki Tomita <tomita@cpan.org>
| HTML-MobileJp-Filter documentation | Contained in the HTML-MobileJp-Filter distribution. |
package HTML::MobileJp::Filter::PictogramFallback; use Any::Moose; with 'HTML::MobileJp::Filter::Role'; has '+config' => ( default => sub {{ template => '', # sprintf format params => [], # Encode::JP::Mobile::Charnames method names }}, ); use Encode::JP::Mobile ':props'; use Encode::JP::Mobile::Charnames; sub filter { my ($self, $content) = @_; unless ($self->mobile_agent->is_non_mobile) { return; } $content =~ s{(\p{InMobileJPPictograms})}{ my $char = Encode::JP::Mobile::Character->from_unicode(ord $1); my @param; for my $param (@{ $self->config->{params} }) { if ($self->can($param)) { push @param, $self->$param($char); } else { push @param, $char->$param(); } } sprintf $self->config->{template}, @param; }ge; $content; } my %htmlspecialchars = ( '&' => '&', '<' => '<', '>' => '>', '"' => '"' ); my $htmlspecialchars = join '', keys %htmlspecialchars; sub fallback_name { my ($self, $char) = @_; my $fallback; $fallback ||= $char->fallback_name($_) for qw( I V E ); $fallback || ""; } sub fallback_name_htmlescape { my ($self, $char) = @_; my $fallback = $self->fallback_name($char); $fallback =~ s/([$htmlspecialchars])/$htmlspecialchars{$1}/ego; $fallback; } __PACKAGE__->meta->make_immutable; 1; __END__