#!/usr/bin/env raku

use lib 'lib';
use Terminal::ANSI;

unit sub MAIN;

my @lines;

for Terminal::ANSI::EXPORT::DEFAULT::.keys -> $sub {
  my $s = Terminal::ANSI::EXPORT::DEFAULT::{$sub};
  @lines.push: {
    label => ($s.name ~ $s.signature.gist),
    desc => $s.WHY.Str,
    line => $s.WHY.WHEREFORE.line,
    file => $s.WHY.WHEREFORE.file,
  }
}

my $base = 'https://git.sr.ht/~bduggan/raku-terminal-ansi/tree/master';

sub function-docs {
  for @lines.sort: *.<label> -> $l {
    say '[' ~ $l<label> ~ ']'
    ~ '(' ~
      $base ~ $l<file>.words[0].subst("$*CWD",'')~ '#L' ~ $l<line>
    ~ ') ' ~ $l<desc>;
    put '';
  }
}

my $r = 'README.md'.IO;

my $hide = False;
for $r.lines -> $l {
   $hide = False if $l ~~ /'## Author'/;
   put $l unless $hide;
   if $l ~~ /'## Function'/ {
     put '';
     function-docs;
     put '';
     $hide = True;
   }
}

