chiark / gitweb /
README.md: wip TOC
[nailing-cargo.git] / markdown-toc-filter
1 #!/usr/bin/perl -wn
2
3 use strict;
4 use autodie;
5
6 our (@doc, @toc);
7 our $last;
8
9 if (1..(m/^[A-Z]/ && m/table of contents/i)) {
10   # before TOC
11   print;
12 } elsif (m/^\w/..0) {
13   push @doc, $_;
14   # after TOC
15   if (m/^-+$/ || m/^=+$/) {
16     my $lev = $& =~ m/^=/ ? '  ' : '    ';
17     my $href = $last;
18     $href =~ y/ A-Z/-a-z/;
19     $href =~ y/-._a-z//cd;
20     push @toc, "${lev}* [$last](#$href)\n";
21   }
22   $last = $_;
23   chomp $last;
24 } else {
25   # in TOC
26   print if m/^===|^---/;
27 }
28
29 END {
30   print "\n", @toc, "\n";
31   print @doc;
32 }