chiark / gitweb /
README.md: wip TOC, seems to generate nice output
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 19 Jun 2020 17:20:22 +0000 (18:20 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 19 Jun 2020 17:20:22 +0000 (18:20 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
markdown-toc-filter

index ec759724a64a72ac71e781ea2b0e53e7de5cd969..8bb87f74d34b2d18e39a2556642cd4ff9608c4ac 100755 (executable)
@@ -6,24 +6,32 @@ use autodie;
 our (@doc, @toc);
 our $last;
 
-if (1..(m/^[A-Z]/ && m/table of contents/i)) {
-  # before TOC
-  print;
-} elsif (m/^\w/..0) {
-  push @doc, $_;
-  # after TOC
+sub scanline () {
   if (m/^-+$/ || m/^=+$/) {
     my $lev = $& =~ m/^=/ ? '  ' : '    ';
     my $href = $last;
     $href =~ y/ A-Z/-a-z/;
     $href =~ y/-._a-z//cd;
-    push @toc, "${lev}* [$last](#$href)\n";
+    my $text = $last;
+    $text = 'Introduction' if $. == 2;
+    push @toc, "${lev}* [$text](#$href)\n";
   }
   $last = $_;
   chomp $last;
+}
+
+if (1..(m/^[A-Z]/ && m/table of contents/i)) {
+  # before TOC
+  scanline();
+  print;
+} elsif (m/^\w/..0) {
+  # after TOC
+  push @doc, $_;
+  scanline();
 } else {
   # in TOC
   print if m/^===|^---/;
+  scanline();
 }
 
 END {