aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2021-06-04 13:00:16 +0200
committerJonas Smedegaard <dr@jones.dk>2021-06-04 14:34:08 +0200
commit1e8aebe4fee30c4c7e5c051581240f4857a8818f (patch)
tree39382c6fb18ce2e5a2751fc2bcdcc99a8758a8ff
parent0518e8f506412510125eea8628572c13857673d0 (diff)
support inline variable hints in documents, and use it for README
-rw-r--r--README.md10
-rwxr-xr-xbin/mkdocs-prep.pl24
2 files changed, 30 insertions, 4 deletions
diff --git a/README.md b/README.md
index 5f95f27..2cdf9b1 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,11 @@
# Documentation of system features _(features)_
-This is documentation for system features at {{organisation}}.
+This is documentation for system features at Example orga.
+
+
+## Special strings
+
+NB! This documentation uses special strings
+which you may want to adapt for your local setup:
+
+organisation: Example orga
diff --git a/bin/mkdocs-prep.pl b/bin/mkdocs-prep.pl
index e510185..efa71fb 100755
--- a/bin/mkdocs-prep.pl
+++ b/bin/mkdocs-prep.pl
@@ -1,5 +1,6 @@
#!/usr/bin/perl
+use v5.18; # needed for \h (horizontal whitespace) in regexes
use strict;
use warnings;
use autodie;
@@ -10,11 +11,11 @@ use Text::Hogan::Compiler;
=head1 NAME
-mkdocs-prep - mkdocs preprocessor expanding mustache tokens
+mkdocs-prep - mkdocs preprocessor expanding inline hints and mustache tokens
=head1 VERSION
-Version 0.01
+Version 0.02
=head1 SYNOPSIS
@@ -22,9 +23,15 @@ Version 0.01
B<mkdocs-prep> prepares a markdown document for B<mkdocs> processing.
-The document is treated as a mustache template
+The document is converted using inline hint section to a mustache template
and resolved using an external set of single-word tokens.
+A document section named "Special strings" is parsed for token definitions
+where each line lists a single-word token, a colon, and default string.
+The section is then stripped,
+and all occurences of default strings are replaced with tokens
+wrapped with double curly brackets.
+
Template tokens are gathered from external config file F<site.mk>,
where each line lists a token, an equals sign, and replacement string.
@@ -41,6 +48,17 @@ $config = Config::Tiny->read( 'site.mk', 'utf8' );
my $content = path($infile)->slurp_utf8;
+$content =~ s/^#+\s*Special strings\s*\n((?:\n|[^#\n][^\n]*\n)*)//m;
+my $section = $1 || '';
+my %defaults;
+while ( $section =~ /^(\w+)\h*:\h*(\w+(?:\h+\w+)*)/mg ) {
+ my $token = $1;
+ my $string = $2;
+
+ $content =~ s/\Q$string\E/{{$token}}/g;
+};
+
+
my $compiler = Text::Hogan::Compiler->new;
my $template = $compiler->compile($content);