OSDN Git Service

tocプラグインに、アウトラインとして出力する見出しレベルを指定するためのオプションを追加。
authortakezoe <takezoe@871d6764-1e22-0410-b313-a55050885396>
Sun, 31 Jul 2011 18:20:27 +0000 (18:20 +0000)
committertakezoe <takezoe@871d6764-1e22-0410-b313-a55050885396>
Sun, 31 Jul 2011 18:20:27 +0000 (18:20 +0000)
takezoe/plugin/book/Toc.pm
takezoe/plugin/book/TocParser.pm

index 147b2d9..4639480 100644 (file)
@@ -8,6 +8,14 @@
 # <pre>
 # {{toc ¥Ú¡¼¥¸Ì¾}}
 # </pre>
+# <p>
+#   ¥¢¥¦¥È¥é¥¤¥ó¤Ëɽ¼¨¤¹¤ë¸«½Ð¤·¤Î¥ì¥Ù¥ë¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£
+#   °Ê²¼¤ÎÎã¤Ç¤Ï¸«½Ð¤·2¤Þ¤Ç¤ò¥¢¥¦¥È¥é¥¤¥ó¤È¤·¤Æɽ¼¨¤·¤Þ¤¹¡£
+# </p>
+# <pre>
+# {{toc 2}}
+# {{toc ¥Ú¡¼¥¸Ì¾,2}}
+# </pre>
 #
 ################################################################################
 package plugin::book::Toc;
@@ -24,19 +32,24 @@ sub new {
 # ¥Ö¥í¥Ã¥¯¥á¥½¥Ã¥É
 #==============================================================================
 sub paragraph {
-       my $self = shift;
-       my $wiki = shift;
-       my $page = shift;
-       my $cgi  = $wiki->get_CGI;
+       my $self  = shift;
+       my $wiki  = shift;
+       my $page  = shift;
+       my $level = shift;
+       my $cgi   = $wiki->get_CGI;
        my $p_cnt = 0;
 
+       if($level eq "" && $page =~ /^[0-9]+$/){
+               $level = $page;
+               $page = "";
+       }
        $page = $cgi->param("page") unless $page;
        
        # ¥Ú¡¼¥¸¤Î»²¾È¸¢¸Â¤¬¤¢¤ë¤«¤É¤¦¤«Ä´¤Ù¤ë
        unless($wiki->can_show($page)){
                return undef;
        }
-       my $parser = plugin::book::TocParser->new($wiki, $page);
+       my $parser = plugin::book::TocParser->new($wiki, $page, $level);
        return $parser->outline($wiki->get_page($page));
 }
 
index ee6f3d6..74b4629 100644 (file)
@@ -17,6 +17,14 @@ sub new {
        my $class = shift;
        my $self  = Wiki::HTMLParser->new(shift);
        my $page  = shift;
+       my $level = shift;
+       
+       if($level ne ""){
+               $self->{'display_level'} = $level;
+       } else {
+               $self->{'display_level'} = 3;
+       }
+       
        $self->{'outline_html'}  = "";
        $self->{'outline_level'} =  0;
        $self->{'outline_cnt'}   =  0;
@@ -31,7 +39,12 @@ sub l_headline {
        my $self  = shift;
        my $level = shift;
        my $obj   = shift;
-       my $text  = &Util::delete_tag(join("",@$obj));
+       
+       if($level > $self->{'display_level'}){
+               return;
+       }
+       
+       my $text = &Util::delete_tag(join("",@$obj));
        
        if($level > $self->{outline_level}){
                while($level!=$self->{outline_level}){