blob: e510185745acbc5182119edb60e78e6244f5c2b0 (
plain)
- #!/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<mkdocs-prep> prepares a markdown document for B<mkdocs> 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<site.mk>,
- 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;
|