From 0518e8f506412510125eea8628572c13857673d0 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Fri, 4 Jun 2021 10:57:44 +0200 Subject: externalize script bin/mkdocs-prep.pl, and (if missing) auto-generate site.mk in build target --- bin/mkdocs-prep.pl | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100755 bin/mkdocs-prep.pl (limited to 'bin/mkdocs-prep.pl') diff --git a/bin/mkdocs-prep.pl b/bin/mkdocs-prep.pl new file mode 100755 index 0000000..e510185 --- /dev/null +++ b/bin/mkdocs-prep.pl @@ -0,0 +1,49 @@ +#!/usr/bin/perl + +use strict; +use warnings; +use autodie; +use List::Util qw(pairs); +use Config::Tiny; +use Path::Tiny; +use Text::Hogan::Compiler; + +=head1 NAME + +mkdocs-prep - mkdocs preprocessor expanding mustache tokens + +=head1 VERSION + +Version 0.01 + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +B prepares a markdown document for B processing. + +The document is treated as a mustache template +and resolved using an external set of single-word tokens. + +Template tokens are gathered from external config file F, +where each line lists a token, an equals sign, and replacement string. + +Each token in the document, +wrapped with double curly brackets {{like_this}}, +is replaced (including brackets) with corresponding string. + +=cut + +my ( $infile, $outfile ) = @ARGV; + +my $config = Config::Tiny->new; +$config = Config::Tiny->read( 'site.mk', 'utf8' ); + +my $content = path($infile)->slurp_utf8; + +my $compiler = Text::Hogan::Compiler->new; +my $template = $compiler->compile($content); + +path($outfile)->spew_utf8( $template->render( $config->{_} ) ); + +1; -- cgit v1.2.3