OSDN Git Service

改行コードをLFに統一。
[fswiki/fswiki.git] / plugin / info / OutlineParser.pm
1 ###############################################################################
2 #
3 # ¥¢¥¦¥È¥é¥¤¥ó¥Ñ¡¼¥µ
4 #
5 ###############################################################################
6 package plugin::info::OutlineParser;
7 use strict;
8 use vars qw(@ISA);
9 use Wiki::HTMLParser;
10
11 @ISA = qw(Wiki::HTMLParser);
12
13 #==============================================================================
14 # ¥³¥ó¥¹¥È¥é¥¯¥¿
15 #==============================================================================
16 sub new {
17         my $class = shift;
18         my $self  = Wiki::HTMLParser->new(shift);
19         $self->{outline_html}  = "";
20         $self->{outline_level} =  0;
21         $self->{outline_cnt}   =  0;
22         return bless $self,$class;
23 }
24
25 #==============================================================================
26 # ¥Ø¥Ã¥É¥é¥¤¥ó¤Î¤ßÃê½Ð
27 #==============================================================================
28 sub l_headline {
29         my $self  = shift;
30         my $level = shift;
31         my $obj   = shift;
32         my $text  = &Util::delete_tag(join("",@$obj));
33         
34         if($level > $self->{outline_level}){
35                 while($level!=$self->{outline_level}){
36                         $self->{outline_html} .= "<ul>\n";
37                         $self->{outline_level}++;
38                 }
39         } elsif($level < $self->{outline_level}){
40                 while($level!=$self->{outline_level}){
41                         $self->{outline_html} .= "</li></ul>\n";
42                         $self->{outline_level}--;
43                 }
44         } else {
45                 $self->{outline_html} .= "</li>\n";
46         }
47         $self->{outline_html} .= "<li><a href=\"#p".$self->{outline_cnt}."\">$text</a>";
48         $self->{outline_cnt}++;
49 }
50
51 #==============================================================================
52 # ¥¢¥¦¥È¥é¥¤¥óɽ¼¨ÍÑHTML¤Î¼èÆÀ
53 #==============================================================================
54 sub outline {
55         my $self   = shift;
56         my $source = shift;
57         $self->parse($source);
58         
59         while($self->{outline_level}!=0){
60                 $self->{outline_html} .= "</li></ul>\n";
61                 $self->{outline_level}--;
62         }
63         
64         return $self->{outline_html};
65 }
66
67 #==============================================================================
68 # ¥×¥é¥°¥¤¥ó¤Î²òÀϤò¹Ô¤¦¤È̵¸Â¥ë¡¼¥×¤·¤Æ¤·¤Þ¤¦¤¿¤á
69 #==============================================================================
70 sub plugin{}
71
72 #==============================================================================
73 # ¥×¥é¥°¥¤¥ó¤Î²òÀϤò¹Ô¤¦¤È̵¸Â¥ë¡¼¥×¤·¤Æ¤·¤Þ¤¦¤¿¤á
74 #==============================================================================
75 sub l_plugin{
76         my $self   = shift;
77         my $plugin = shift;
78         
79         # outline°Ê³°¤Î¾ì¹ç¤Î¤ß½èÍý¤ò¹Ô¤¦
80         if($plugin->{command} ne "outline"){
81                 my $info = $self->{wiki}->get_plugin_info($plugin->{command});
82                 if($info->{FORMAT} eq "WIKI"){
83                         return $self->SUPER::l_plugin($plugin);
84                 }
85                 
86         } else {
87                 return undef;
88         }
89 }
90
91 1;