aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile3
-rwxr-xr-xbin/hedgedoc2quarto77
-rwxr-xr-xbin/hedgedoc2quarto.sh7
3 files changed, 78 insertions, 9 deletions
diff --git a/Makefile b/Makefile
index d6d5675..4caad12 100644
--- a/Makefile
+++ b/Makefile
@@ -54,8 +54,7 @@ pad-export-code: code/index.qmd
pad-export-code-gantt: code/_gantt.qmd
hedgedoc export --md mJnfBHZ7Qr2W1Hu-QppL8A $<~
- bin/hedgedoc2quarto.sh < $<~ > $<
- rm -f $<~
+ bin/hedgedoc2quarto $<~ $<
pad-export-use: use/index.qmd
hedgedoc export --md aFt_nNkYTQibl0CQrBJhtQ $<
diff --git a/bin/hedgedoc2quarto b/bin/hedgedoc2quarto
new file mode 100755
index 0000000..21f8158
--- /dev/null
+++ b/bin/hedgedoc2quarto
@@ -0,0 +1,77 @@
+#!/usr/bin/perl -g
+
+use v5.36;
+use strict;
+use utf8;
+
+=head1 NAME
+
+hedgedoc2quarto - convert HedgeDoc content to Quarto
+
+=head1 VERSION
+
+Version 0.0.1
+
+=head1 SYNOPSIS
+
+ hedgedoc2quarto INFILE OUTFILE
+
+ hedgedoc2quarto < INFILE > OUTFILE
+
+=head1 DESCRIPTION
+
+B<hedgedoc2quarto> reformats text content
+from HedgeDoc- to Quarto-flavored Markdown,
+and adapt Mermaid diagram code.
+
+Both HedgeDoc and Quarto use Markdown,
+but different flavors,
+and they support different subsets of Mermaid diagram code.
+
+=cut
+
+my ( $infile, $outfile, $bogus ) = @ARGV;
+die 'Too many arguments: expected INFILE and OUTFILE' if $bogus;
+@ARGV = ($infile) if $infile;
+my $content = <>;
+
+$content =~ s/^(?'fence'[``~]{3,})\s*\Kmermaid\n(?'type'gantt)\n(?'code'.*?\n)\k'fence'$/{mermaid}\n%%| fig-width: 100%\n$+{type}\n$+{code}$+{fence}/gsm;
+
+$content =~ s/^gantt\K$/\ntickInterval 1month/gm;
+
+if ($outfile) {
+ open(FH, '>', $outfile) or die $!;
+ print FH $content;
+} else {
+ print $content;
+}
+
+=encoding UTF-8
+
+=head1 AUTHOR
+
+Jonas Smedegaard C<< <dr@jones.dk> >>
+
+=head1 COPYRIGHT AND LICENSE
+
+ Copyright © 2024 Jonas Smedegaard
+
+This program is free software:
+you can redistribute it and/or modify it
+under the terms of the GNU Affero General Public License
+as published by the Free Software Foundation,
+either version 3, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY;
+without even the implied warranty
+of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+See the GNU Affero General Public License for more details.
+
+You should have received a copy
+of the GNU Affero General Public License along with this program.
+If not, see <https://www.gnu.org/licenses/>.
+
+=cut
+
+1;
diff --git a/bin/hedgedoc2quarto.sh b/bin/hedgedoc2quarto.sh
deleted file mode 100755
index eac4b33..0000000
--- a/bin/hedgedoc2quarto.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-set -eu
-
-perl -gp \
- -e 's/```\Kmermaid/{mermaid}\n%%| fig-width: 100%/g;'\
- -e 's/^gantt$/gantt\ntickInterval 1month/gm;'