Home > Perl Archive

[ << < 2  3  4  5  6  7  8  9  10  11  12 >> ]

Perl Archive

Template::Plugin::TruncateByWord 0.1 公開

Template::Plugin::TruncateByWord を公開

[% "あいうえお" | truncate_by_word(3, "。。。") %]
# result あいう。。。

って感じ。こういうものの英語ドキュメントは困るなぁ。UTF8 で書いて、ひらがないれてしまってもいいのかな

NAME
    Template::Plugin::TruncateByWord - A Template Toolkit filter to truncate
    not the number of bytes but characters

SYNOPSIS
      # result is 'ab'
      [% USE TruncateByWord %]
     [[% 'abcdefg' | truncate_by_word(2) %]] 
      # result is 'abc....'
      [% USE TruncateByWord %]
      [% FILTER truncate_by_word(3,'....') %]
      abcdefg
      [% END %]

      # default charset = 'utf8'. you can change this.
      # result is 'abcd'
      [% USE TruncateByWord 'euc-jp' %]
      [% FILTER truncate_by_word(4) %]
      abcdefg
      [% END %]

DESCRIPTION
    Template::Plugin::TruncateByWord is a filter plugin for Template Toolkit
    which truncate text not the number of bytes but the number of
    characters.

BUGS
    If found, please Email me. I tested utf8, euc-jp, shiftjis, 7bit-jis,
    big5, and euc-kr. Please send me more test cases.

SEE ALSO
    Template, Template::Plugin::Filter, and t/*.t

AUTHOR
    User & KAWABATA Kazumichi (Higemaru) <kawabata@cpan.org>

COPYRIGHT AND LICENSE
    Copyright (C) 2008- KAWABATA Kazumichi

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

Template::Plugin::TruncateByWord (3)

こんなもんでいいか

package Template::Plugin::TruncateByWord;

use strict;
use warnings;

our $VERSION = '0.1';

use Template::Plugin::Filter;
use base 'Template::Plugin::Filter';

use Encode;

our $FILTER_NAME_DEFAULT = 'truncate_by_word';
our $ORG_ENC_DEFAULT = 'utf8';

sub init {
    my $self = shift;
    $self->{_DYNAMIC} = 1;
    $self->install_filter($self->{_CONFIG}->{name}||$FILTER_NAME_DEFAULT);
    $self->{_CONFIG}->{enc} ||= $self->{_ARGS}->[0] || $ORG_ENC_DEFAULT;
    return $self;
}

sub filter {
    my($self, $string, $args, $conf) = @_;

    return '' unless $string;

    # decode
    my $org_enc;
    unless ( utf8::is_utf8($string) ) {
        $org_enc = $self->{_CONFIG}->{enc};
        $string = Encode::decode($org_enc, $string);
    }

    my $org_length = CORE::length($string);
    my $length = $args->[0] || $org_length;
    return if $length =~ /\D/;
    $string = CORE::substr($string, 0, $length);

    my $suffix = $args->[1]||'';
    # revive encode
    $string = Encode::encode($org_enc, $string) if $org_enc;
    return $org_length > $length ? $string.$suffix : $string ;
}

1;

二年前の日記を見てプチ鬱

喉元過ぎれば、の可能性ありなので書いておく

二年前の日記で DateTime::Format::DateParse をあつかっている
にもかかわらず、最近やった仕事でまんま二年前に「今までやってた」とかいう手法に近いことをやっている自分が気にいらない

最近の自分は「DateTime は入っていないサーバ多いのであまり使わない」という感じだったのだが、それならそれで、DateTime を使わずに同等のことをスマートに行う解を設けておくべきだ。gmtime、timegm、HTTP::Date をベタに使ってるあたりがどうにも頂けない

。。。というような事になったのは、自分用細かいものライブラリが古くて使いたくなくなってるのも一因なので、CGI::Minimal::App::Util をまじめに作っておくことにした

Template::Plugin::TruncateByWord 再考

もうちょっと探して似たようなものがなければ、pod 書いて公開するか

とか言った手前、調べてみた
「文字数」ってのは見つからなかったので公開しようとしたが、文字コードの自動判別なんかいらなくね? それよりも、文字コード自分で指定したいんじゃね? って思ったのでそれをまず修正することにした

で、その途中で見つけた、いつか使いそうなものたち。全角を半角 2 文字分として truncate するもの

こちらの方が需要ありそうですね。つうか、需要があるから既に世の中にあるのですね。それにしても「文字数」で truncate するのって需要ないんでしょうか? そういう時はみなさんフラグ付で Template-Toolkit に渡してるんでしょうか? いろいろ地雷じゃないんでしょうか?

というような事を思ったので、しばらく TT の実験してみることにした

Template::Plugin::TruncateByWord

UTF-8 な文章の概要(「あいうえおかきくけこ」を「あいうえお。。。」)とか表示するのに Template-Toolkit でやってしまいたいなぁ、と思った

本当は Template-Toolkit でフラグ付 UTF-8 を上手に扱うワザを身につければいいのだろう、とは思うのだが、今使いたい。今欲しい

ちょっと探したけど思うようなものがなかったのでパラリと書いた
もうちょっと探して似たようなものがなければ、pod 書いて公開するか

euc-jp や utf-8 のバイト列 -> フラグ付 UTF8 -> 指定「文字数」でちょんぎる -> 元の文字コードに戻す
というようなことをやっている

package Template::Plugin::TruncateByWord;

use strict;
use warnings;

our $VERSION = '0.1';

use Template::Plugin::Filter;
use base 'Template::Plugin::Filter';

use Encode;
use Encode::Guess qw/euc-jp shiftjis 7bit-jis/;

our $FILTER_NAME = 'truncate_by_word';

sub init {
    my $self = shift;
    $self->{_DYNAMIC} = 1;
    $self->install_filter($self->{_ARGS}->[0]||$FILTER_NAME);
    return $self;
}

sub filter {
    my($self, $string, $args, $conf) = @_;

    return '' unless $string;

    # decode
    my $org_enc;
    unless ( utf8::is_utf8($string) ) {
        my $enc = Encode::Guess::guess_encoding($string);
        $org_enc = ref $enc ? $enc->name : 'euc-jp';
        $string = Encode::decode($org_enc, $string);
    }

    my $org_length = CORE::length($string);
    my $length = $args->[0] || $org_length;
    return if $length =~ /\D/;
    $string = CORE::substr($string, 0, $length);

    my $suffix = $args->[1]||'';
    # revive encode
    $string = Encode::encode($org_enc, $string) if $org_enc;
    return $org_length > $length ? $string.$suffix : $string ;
}

1;

使うものじゃなくて作るもの

via New Generation Chronicle:開拓者から改革者へ ネタで未来を切り開く男 大沢和宏 (2/6) - ITmedia エンタープライズ

 メリットは、自分で作ってるので手足のように使える、Catalystとかの嫌な部分が体感できた。そんな感じです。やっぱりフレームワークは使うものじゃなくて作るものだと思うので、そろそろSoozyの次の別のフレームワークを作ろうとしています。

非常に納得。手前味噌ながら、一年以上日記では触れていないCGI::Minimal::App、自分で作ったものだけに、日常使いに最適! 自分で作ってるから、自分が好きなように直し放題! 公開していないので本当にいじり放題! そして、公開前に飽きてきた!

つっても次のフレームワークを作るかというとそこまでの気持ちはなくて「如何に日常書くコード量を減らしてギター弾く考えることに時間を使うか」ということをやるためには、まだまだ C::M::App には進化してもらわなければならない

FindBin::libs が激しく便利そう

おいぬま日報(不定期)経由。忘れないようにメモ

stfuawsc

と、2 件書いて、つくづく stfuawsc だなぁ。。。と orz
ワシ、超がんがれ

「輝け!全日本最強 CPAN Author 決定選手権 2007」完全版

http://d.hatena.ne.jp/charsbar/20080522/1211428790
The CPANTS mulitplayer online game の日本人版を見ていたところ、後輩と自分を発見。後輩、善戦。ワシ、もっとがんがれ。超がんがれ

そんな所に名前載るだけで充分すごいです!! - 加藤泰文 (2008年05月29日 21時46分26秒)
あざーす! でも、もっと色々やりたいという思いとか、やりたいと思うだけではいけないという思いとか、いろいろあったりします - oneroad (2008年05月29日 22時15分02秒)

Perl-users.jp - 日本のPerlユーザのためのハブサイト

http://perl-users.jp/

YAPC::Asia 2008 で Michael Schwern は「SEO に有効な独自ドメインを取って、もっと Perl 初心者が集まりやすい nice な Perl の情報を集めたサイトを作れ!」といったので Perl-users.jp ドメインを取って、ここに Perl-users.jp を開始します。

以前より Shibuya.pm 界隈では、初心者や複雑な Perl の話題をキャッチアップ出来ない Perl 利用者をどうすくい上げるか、という議論を盛んに行っておりました。
Schwern の言う通り Perl で検索してもなかなかいい情報にたどり着けなかったりと、それは酷い現状をどうにかしたいという思いは YAPC::Asia 2008 のスピーカー陣に共通するものであると思っています。

で、あっという間にドメイン取得してサイト開設した、と。こういう行動力は心底すごいと思う。外にアピールする人ばかりがすごいというわけではないが、こういう行動力は何かと比べてどうこうじゃなくて、本当にすごいと思う

  • 小さな集団の中で俺ってすごいとか言ってるだけで自分が井の中の蛙だと薄々気づいてるくせに気づきたくないふりをしているっぽい人にはたくさんあってきたが、こういう人には、まだ数人にしか出会えていない
  • 単に自分が出会いにいかないってだけで、向こうから会いにきてくれないってことはわかっているので、わしも「小さな集団云々」と大して変わらんのぉ
  • 最近ひとの役にたつ行動をあまりしていないので、少なくとも、いっしょに仕事をしている仲間達にとって役にたつ行動をとろうかと思った

[ << < 2  3  4  5  6  7  8  9  10  11  12 >> ]

Home > Perl Archive

Feeds

Return to page top