#!/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" . &mmd2mmd( $+{type}, $+{code} ) . $+{fence} /gsme; if ($outfile) { open( FH, '>', $outfile ) or die $!; print FH $content; } else { print $content; } sub mmd2mmd ( $type, $code ) { if ( $type eq 'gantt' ) { $code = "tickInterval 1month\n$code"; } return "$type\n$code"; } =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;