mieki256's diary



2005/11/19() [n年前の日記]

#4 [hns] CITE関係を再度修正、したけど動作が微妙におかしい

引用元を記述しなかった場合に、思ったような出力結果が得られてなかったので、そのあたりを修正。

なんとなくだけど、 _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
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ソースを見ると、
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;
 }
のところを通ってないのかしら。よくわからん…。

以上です。

過去ログ表示

Prev - 2005/11 - Next
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project