Basic syntax highlighting

This commit is contained in:
Nathan McCarty 2025-02-04 03:10:40 -05:00
parent 2c38910ccd
commit 37e92392ca
4 changed files with 87 additions and 3 deletions

View file

@ -60,11 +60,24 @@ sub pack(*@args) {
# Run a katla command, erroring on failure, returning the standard out, and
# mangling the output accordingly
sub katla(*@args --> Str:D) {
# Run the requested katla command
my $katla = run 'katla', @args, :out, :err;
my $katla-out = $katla.out.slurp: :close;
my $katla-err = $katla.err.slurp: :close;
die "Katla exited with {$katla.exitcode}\nout: $katla-out\nerr: $katla-err"
unless $katla;
# TODO modify output
# Modify the output to use our styling instead of katla's
# Remove the style block and line breaks
$katla-out ~~ s:g/'<style>' .* '</style>'//;
$katla-out ~~ s:g/'<br />'//;
# Use <pre> blocks for the code and inject our own class for idris code
$katla-out ~~ s:g/'<code class="' \w+ '">' \s*/<pre><code class="idris-code">/;
$katla-out ~~ s:g/\s* '</code>'/<\/code><\/pre>/;
# Replace the highlighting classes with our own
$katla-out ~~ s:g/'class="Idris' (\w+) '"'/class="hl-{$/[0].lc}"/;
# Clean up inappropiate escaping of some characters
$katla-out ~~ s:g/'\\*'/*/;
$katla-out ~~ s:g/'\\_'/_/;
$katla-out ~~ s:g/'\\\\'/\\/;
$katla-out
}