use v6; use Pygments; my %*POD2HTML-CALLBACKS; %*POD2HTML-CALLBACKS = sub (:$node, :&default) { Pygments.highlight($node.contents.join('\n'), "perl6", :style(Pygments.style('emacs'))) }; use Pod::To::HTML; use Pod::Load; use Template::Mustache; sub git-version { run('git', 'tag', '-l', :out).out.lines.first } sub pods { dir('./docs', :test( *.IO.extension eq 'pod'|'pod6' )) } my $sidebar = pods.sort.map( -> $p { my $f = $p.IO.extension('html').basename; "
  • {$f.split('.').first.tc}
  • " }); sub MAIN(:o(:$output-dir)?) { $output-dir.IO.add('index.html').spurt( Template::Mustache.render('./templates/index.mustache'.IO.slurp, {version => git-version()})); pods.map( -> $pod { say "Generating html for $pod"; next if $pod.IO.extension ne 'pod'|'pod6'; my $html = pod2html( load($pod.IO), :templates ); my $filename = $pod.IO.extension('html'); my $output = $output-dir.defined ?? $output-dir.IO.add($filename.basename) !! $filename; spurt $output, $html; }); }