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 --- bin/hedgedoc2quarto | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 bin/hedgedoc2quarto (limited to 'bin/hedgedoc2quarto') 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; -- cgit v1.2.3