package HNS::PIM::Link;
# $Id: Link.pm,v 1.1 2001/03/18 05:52:39 kenji Exp $
################################################################
####仕様####
#diary/linkに
#優先順位 URL ページ名
#と記述する。
#これによりTodoと似たようにする。
#出力は
#
################################################################
=head1 NAME
HNS::PIM::Link - Link集定義
=head1 SYNOPSIS
my $link = new HNS::PIM::Link(filename=>'diary/link');
$link->Read;
print $link->AsHTML;
=cut
################################################################
use strict;
use ObjectTemplate;
use CodeConv;
@HNS::PIM::Link::ISA = qw(ObjectTemplate);
use HNS::System;
use HNS::Template;
attributes qw(contents);
use vars qw($MaxNum $ContentTemplate $BeginTemplate $EndTemplate);
#元は
#$MaxNum = 8:
$MaxNum = 8;
# template
#$ContentTemplate = "%priority %content\n";
$ContentTemplate = "%content\n";
$BeginTemplate = "";
sub initialize($)
{
my $self = shift;
$self->contents([]);
}
################################################################
=head2 $t->Read;
データファイルを読み込む
=cut
sub Read ($)
{
my $self = shift;
my $filename = "$HNS::System::DiaryDir/link";
open(F, $filename) || return;
while (){
#JISコード対策かも。
next if /^$/;
CodeConv::toeuc(*_);
#先頭に数字が一回以上 空白 なんかの文字 末尾
# /^(\d+)\s(.*)$/;
# /^(\d+)\s(.*)\s(.*)$/;
/^(\d+)\s(\S+)\s(.*)$/;
# @{$self->contents} = split('/\s/', $self->contents);
push(@{$self->contents},
{priority=>sprintf("%02d",$1), e_url=>$2, content=>$3});
# {priority=>sprintf("%02d",$1), content=>$2});
}
close F;
}
=head2 $t->AsHTML;
HTML変換して返す
=cut
sub AsHTML ($)
{
my $self = shift;
my $templ = new HNS::Template;
my $html .= $BeginTemplate;
my $cnt;
for (sort {$b->{priority} <=> $a->{priority}} @{$self->contents}){
last if ++$cnt > $MaxNum;
$html .= $templ->Expand($ContentTemplate,
{priority=>$_->{priority},
e_url=>$_->{e_url},
content=>$_->{content}});
}
$html .= $EndTemplate;
}
1;