ikiwiki/doc/todo/toc_plugin:_set_a_header_ce...

49 lines
1.7 KiB
Markdown

It would be nice if the [[plugins/toc]] plugin let you specify a header level "ceiling" above which (or above and including which) the headers would not be incorporated into the toc.
Currently, the levels=X parameter lets you tweak how deep it will go for small headers, but I'd like to chop off the h1's (as I use them for my page title) -- [[Jon]]
> This change to toc.pm should do it. --[[KathrynAndersen]]
> > The patch looks vaguely OK to me but it's hard to tell without
> > context. It'd be much easier to review if you used unified diff
> > (`diff -u`), which is what `git diff` defaults to - almost all
> > projects prefer to receive changes as unified diffs (or as
> > branches in their chosen VCS, which is [[git]] here). --[[smcv]]
> > > Done. -- [[KathrynAndersen]]
> > > > Looks like Joey has now [[merged|done]] this. Thanks! --[[smcv]]
--- /files/git/other/ikiwiki/IkiWiki/Plugin/toc.pm 2009-11-16 12:44:00.352050178 +1100
+++ toc.pm 2009-12-26 06:36:06.686512552 +1100
@@ -53,8 +53,8 @@
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 {
@@ -67,10 +67,16 @@
# Take the first header level seen as the topmost level,
# even if there are higher levels seen later on.
+ # unless we're given startlevel as a parameter
if (! $startlevel) {
$startlevel=$level;
$curlevel=$startlevel-1;
}
+ elsif (defined $params{startlevel}
+ and $level < $params{startlevel})
+ {
+ return;
+ }
elsif ($level < $startlevel) {
$level=$startlevel;
}
[[!tag patch]]