モバイル用にHTMLを圧縮するPlack::Middlewareらしきもの

HTMLソースを携帯用に圧縮するPlack::Middlewareらしきもの。スペースや改行を削除するのと、全角→半角変換などを適当にやってくれる。絵文字はできてない。

package Plack::Middleware::KetaiMinimize;
use strict;
use warnings;
use Lingua::JA::Regular::Unicode;
our $VERSION = '0.01';
use utf8;
use Encode;
use Encode::JP::Emoji;
use Encode::JP::Emoji::Property;
use base qw( Plack::Middleware );
use Plack::Util;

sub call {

    my $self = shift;
    my $res = $self->app->(@_);
    $self->response_cb($res, sub {
        my $res = shift;
        my $h = Plack::Util::headers($res->[1]);
        if ($h->get('Content-Type') =~ 'text/html') {
            return sub {
                my $chunk = shift;
                if (! defined $chunk) {
                    return;
                }
                $chunk =~ s{(rn|r|n|s)+}{ }g;
                $chunk =~ s{(^|>)([^<]+)}{
                    my $a = $1;
                    my $b = Lingua::JA::Regular::Unicode::katakana_z2h($2);
                    $b =~ tr{-}{0-9};
                    $b =~ tr{、。()!?}{、。()!?};
                    if ($b eq ' ') {
                        $a;
                    } else {
                        $a. $b;
                    }
                }ge;
                #$chunk = emoji_conv($chunk);
                return $chunk;
            };
        }
        $res;
    });
}

モバイル用にHTMLを圧縮するPlack::Middlewareらしきもの」への1件のフィードバック

  1. Dell

    And that's the trick isn't it? Finding room for everything **sigh** I love all of your delicious new frocks and oh my look at your RACK in the cheesecloth frock!!! Mamma mia!!!!!!! OK so you had me panting with desire at the Siamese dancer and braiding – gaww!wwwwwdw!! xoxoxo

    返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です