PEAR HTML_TagCloud Package Draft Proposal!
PerlのHTML::TagCloud::ExtendedのPHP版を作成し、PEARにProposalしてみました。(まだDraft。そしてまだ運用実績はありません。)
CPANにはExtendedじゃないのもあるのですが、Extendedのほうが時間経過を表現できたりして高機能です。
HTML::TagCloud::ExtendedがみごとなPerl OOしてたので、比較的容易に移植することができました。
ただホットタグ機能や設定用変数を渡すとこなど、いくつかの機能は移植しきれてません。
またtimestampの引数をはじめからUnixタイムスタンプにしたり、時間指定しなかった場合、latestとして扱うなど、いくつかの変更を加えています。
もうちょっとコードをきれいにして、コメント書いて、ドキュメント作って、Bugをとって、package.xmlをまとめて、PEARの色表現ルールにも対応して今月中にはPEPrフェーズに進みたいなぁ。package.xmlの書き方、わからん、とか思ってたら、渡りに船で上鍵さんが調査してるみたいだし。なんかいろいろ追い風が吹いているかんじです。
ソースコードはこちら。
サンプルコードはこんな感じです。
<?php
// $Id:$
require_once '../TagCloud.php';
$tags =& new HTML_TagCloud();
$tags->addElement('PHP','http://www.php.net', 39, strtotime(20060315000000));
$tags->addElement('XML','http://www.xml.org', 21, strtotime(20060515000000));
$tags->addElement('Perl','http://www.xml.org', 15, strtotime(20060215000000));
$tags->addElement('PEAR','http://pear.php.net', 32, strtotime(20060415000000));
$tags->addElement('MySQL','http://www.mysql.com', 10, strtotime(20060501000000));
$tags->addElement('PostgreSQL','http://pgsql.com', 6, strtotime(20051201000000));
print $tags->buildALL();
?>
タイムスタンプを省略したり、まとめて配列をそのまま渡せるようにもしてみた。
<?php
// $Id:$
require_once '../TagCloud.php';
$tags =& new HTML_TagCloud();
$name = 'a';
// set a item without timestamp
$tags->addElement($name, '#', 20);
foreach(range(0,10) as $i){
$arr[$i]['name'] = $name;
$arr[$i]['url'] = '#';
$arr[$i]['count'] = $i;
$name++;
}
// set many item at once
$tags->addElements($arr);
$css = $tags->buildCSS();
$taghtml = $tags->buildHTML();
?>
いや,勢いって大事ですな。
HTML::TagCloud::ExtendedのAUTHORであるLyo Katoさんに感謝。
これを作る機会になった某プロジェクトに感謝。
- Posted on 2006/05/23
- パーマリンク
- コメント (7)
- トラックバック (0)
コメント (7)
パッケージの作り方はEthnaのCVSにあるスクリプトを参考にしてください。
コマンド一発でpackage.xml作れるようになってます。
Posted by halt | 2006/05/24 11:26
これですね。ありがとうございます。作るときには使ってみます。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/ethna/ethna/bin/
Posted by shoma | 2006/05/24 11:46
遊んでみました。なんか驚くほど簡単に作れて感激です。
Posted by tumf | 2006/05/24 22:20
ありがたく使わせてもらっていますが、一点気になる箇所があるのでご報告いたします。
初期化時に、渡している$fontsizerangeを利用できていないのではないかと思われます。
既にお気づきであればご容赦ください。
一応、パッチを作ってみてみました。
http://satoshi.kinokuni.org/tech/php/TagCloud.patch
Posted by nikunoki | 2006/07/19 19:23
nikunokiさん
ありがとうございます。
この件、PEARでもコメントもらってまして修正しています。
ちなみに最新版はhttp://catbot.net/src/HTML_TagCloud-0.0.2.tgzになります。PEARで新しいパッケージはPHP5専用しか受け付けないよ、とのことで、PHP5ネイティブになっているので、アップデートできまないかもしれませんが...
Posted by shoma | 2006/07/20 02:28
最新版のご連絡ありがとうございます。
ちなみに、こちらの環境はphp4.4ですが、
アップデートするとやはり動きませんでした。
protectedなりprivateなりの可視性の宣言でコケました。
残念。
Posted by nikunoki | 2006/07/27 16:25
そろそろshomaさんのはvoteフェーズですか?
私のはコメントがないのに痺れを切らしてしまい、自分のパッケージにコメントしてしまいました。技術的には、私も明日からvoteフェースに行けるので。
Posted by shin | 2006/07/30 01:27