From b1e19a9d8c9019d90f5450b14b536dc448830a9d Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Fri, 29 Mar 2024 13:55:38 +0100 Subject: rewrite script hedgedoc2quarto as robust perl script --- Makefile | 3 +- bin/hedgedoc2quarto | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++ bin/hedgedoc2quarto.sh | 7 ----- 3 files changed, 78 insertions(+), 9 deletions(-) create mode 100755 bin/hedgedoc2quarto delete mode 100755 bin/hedgedoc2quarto.sh 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 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<< >> + +=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 . + +=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;' -- cgit v1.2.3