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; }のところを通ってないのかしら。よくわからん…。
[ ツッコむ ]
以上です。