2005/11/19(土) [n年前の日記]
#4 [hns] CITE関係を再度修正、したけど動作が微妙におかしい
引用元を記述しなかった場合に、思ったような出力結果が得られてなかったので、そのあたりを修正。
なんとなくだけど、 _2005/09/29時点の修正 では、一度引用元を指定すると、その後は全部引用元があるような表示になってしまう、ような気がする。自信ないけど。
せっかくだから、URLを付随しない引用元の記述もできるようにした。「CITE Flash Creator ヘルプ」といった記述もできるように。
/lib/HNS/Hnf/Command.pm の該当部分を下のように修正。
なんとなくだけど、 _2005/09/29時点の修正 では、一度引用元を指定すると、その後は全部引用元があるような表示になってしまう、ような気がする。自信ないけど。
せっかくだから、URLを付随しない引用元の記述もできるようにした。「CITE Flash Creator ヘルプ」といった記述もできるように。
/lib/HNS/Hnf/Command.pm の該当部分を下のように修正。
# CITE
package HNS::Hnf::Command::CITE;
use vars qw(@ISA $Template $EndTemplate $NumAttr $IsOneline $AllowCommands
$IsBeginSection $CountName $OmittableEnd
$TemplateWithURI $EndTemplateWithURI
$TemplateWithoutURI $EndTemplateWithoutURI
$TemplateWithContent $EndTemplateWithContent);
@ISA = qw(HNS::Hnf::Command::Cite);
$NumAttr = 1;
$Template = qq(<blockquote>\n);
$EndTemplate = qq(</blockquote>\n);
$TemplateWithoutURI = qq(<blockquote>\n);
$EndTemplateWithoutURI = qq(</blockquote>\n);
$TemplateWithContent = qq(<blockquote cite="%1">\n);
$EndTemplateWithContent = qq(<p class="cite_source"><cite>%1 %content より</cite></P></blockquote>\n);
$TemplateWithURI = qq(<blockquote cite="%1">\n);
$EndTemplateWithURI = qq(<p class="cite_source"><cite><a href="%1">%content</a> より</cite></P></blockquote>\n);
$AllowCommands = [$HNS::Hnf::Command::Entities{'Flow'}];
sub AsHTML ($$$){
my ($self, $start, $params) = @_;
my $uri = $self->{attr}->[1];
if ( $uri ) {
if ( $uri =~ /^http:\/\// ) {
$Template = $TemplateWithURI;
$EndTemplate = $EndTemplateWithURI;
my $uri_title = $self->{attr}->[2];
unless ( $uri_title ) {
$self->{attr}->[2] = $uri;
}
} else {
$Template = $TemplateWithContent;
$EndTemplate = $EndTemplateWithContent;
}
} else {
$Template = $TemplateWithoutURI;
$EndTemplate = $EndTemplateWithoutURI;
}
return $self->SUPER::AsHTML($start, $params);
}
◎ 動作テスト :
ex.1
ex.2
ex.3
ex.4
ex.5
ex.6
CITE
/CITE
ex.2
CITE 引用元
/CITE引用元 より
ex.3
CITE 引用元 スペース区切り
/CITE引用元 スペース区切り より
ex.4
CITE http://www.example.com/
/CITE
ex.5
CITE http://www.example.com/ 引用元
/CITE引用元 より
ex.6
CITE http://www.example.com/ 引用元 スペース区切り
/CITE引用元 スペース区切り より
◎ 動作がおかしい :
ex.4 だけおかしい。リンクを張るべき文字列が存在していない。期待する動作としては、URI を文字列として出力するはずだけど。
HTMLソースを見ると、
Command.pm 中の、
HTMLソースを見ると、
ex.4 <blockquote cite="http://www.example.com/"> ... <p class="cite_source"><cite><a href="http://www.example.com/"></a> より</cite></P></blockquote>となってる。<blockquote cite="〜"> もリンクもあるけど…リンクを張るべき文字列が出力されてない。
Command.pm 中の、
my $uri_title = $self->{attr}->[2];
unless ( $uri_title ) {
$self->{attr}->[2] = $uri;
}
のところを通ってないのかしら。よくわからん…。
[ ツッコむ ]
以上です。