]> sipb.mit.edu Git - ikiwiki.git/commitdiff
toc: Add startlevel parameter. (kerravonsen)
authorJoey Hess <joey@gnu.kitenet.net>
Fri, 25 Dec 2009 20:28:18 +0000 (15:28 -0500)
committerJoey Hess <joey@gnu.kitenet.net>
Fri, 25 Dec 2009 20:28:18 +0000 (15:28 -0500)
IkiWiki/Plugin/toc.pm
debian/changelog
doc/ikiwiki/directive/toc.mdwn

index a585564e74761045ee8e178b6dd8262ede94ee97..b8537d3eb02ac47e74fa13e8ca81b5df56fad424 100644 (file)
@@ -53,8 +53,8 @@ sub format (@) {
        my $page="";
        my $index="";
        my %anchors;
-       my $curlevel;
-       my $startlevel=0;
+       my $startlevel=($params{startlevel} ? $params{startlevel} : 0);
+       my $curlevel=$startlevel-1;
        my $liststarted=0;
        my $indent=sub { "\t" x $curlevel };
        $p->handler(start => sub {
@@ -65,12 +65,17 @@ sub format (@) {
                        my $anchor="index".++$anchors{$level}."h$level";
                        $page.="$text<a name=\"$anchor\"></a>";
        
-                       # Take the first header level seen as the topmost level,
+                       # Unless we're given startlevel as a parameter,
+                       # take the first header level seen as the topmost level,
                        # even if there are higher levels seen later on.
                        if (! $startlevel) {
                                $startlevel=$level;
                                $curlevel=$startlevel-1;
                        }
+                       elsif (defined $params{startlevel} &&
+                              $level < $params{startlevel}) {
+                           return;
+                       }
                        elsif ($level < $startlevel) {
                                $level=$startlevel;
                        }
index d3a510d4abd5568bd5c708e8dc3dd15e3c2bd228..ae0b5eefde0d0ab11bad2a0a59f1f0366ebf1e15 100644 (file)
@@ -1,6 +1,7 @@
 ikiwiki (3.20091219) UNRELEASED; urgency=low
 
   * pagestats: Add show parameter. Closes: #562129 (David Paleino)
+  * toc: Add startlevel parameter. (kerravonsen)
 
  -- Joey Hess <joeyh@debian.org>  Fri, 25 Dec 2009 14:31:22 -0500
 
index bf504dafc35d818a1f5a934ed11318490fc259a8..bb1afa1acdc98bebff9f0cf887425d66dfd6552a 100644 (file)
@@ -14,6 +14,12 @@ the `levels` parameter:
 The toc directive will take the level of the first header as the topmost
 level, even if there are higher levels seen later in the file.
 
+To create a table of contents that only shows headers starting with a given
+level, use the `startlevel` parameter. For example, to show only h2 and
+smaller headers:
+
+       \[[!toc startlevel=2]]
+
 The table of contents will be created as an ordered list. If you want
 an unordered list instead, you can change the list-style in your local
 style sheet.