blob: 1aac608601e9b0bbd4219bca067e187830a03e8a (
plain)
- #!/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"
- . &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<< <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;
|