]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - IkiWiki/Plugin/toc.pm
po: inject custom isselflink to fix selflink detection on translation pages
[git.ikiwiki.info.git] / IkiWiki / Plugin / toc.pm
index a585564e74761045ee8e178b6dd8262ede94ee97..b8537d3eb02ac47e74fa13e8ca81b5df56fad424 100644 (file)
@@ -53,8 +53,8 @@ sub format (@) {
        my $page="";
        my $index="";
        my %anchors;
        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 {
        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>";
        
                        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;
                        }
                        # 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;
                        }
                        elsif ($level < $startlevel) {
                                $level=$startlevel;
                        }