Raku module to render Pod as HTML.
From the command line:
$ raku --doc=HTML lib/FancyModule.rakumod > FancyModule.html
From within Raku:
use Pod::To::HTML;
# Pod file
say render(
'your/file.pod'.IO,
title => 'My Own Title',
subtitle => 'On the Art of Making Titles',
lang => 'en',
);From the Raku ecosystem:
$ zef install Pod::To::HTML
From source:
$ git clone https://github.com/raku-community-modules/Pod-To-HTML.git
$ cd Pod-To-HTML/
$ zef install .
Pod::To::HTML takes a Pod tree and outputs correspondingly formatted HTML using a default or provided Mustache template. There are two ways of accomplishing this:
-
from the command line, using
raku --doc=HTML, which extracts the Pod from the document and feeds it toPod::To::HTML. -
from within a Raku program via the exported
rendersubroutine, which creates a complete HTML document from the Pod. This allows more customization (title,subtitle, andlangcan override Pod's corresponding semantics, different Mustache template (possibly with partials), additional template variables for the template, etc.) than simply rendering the Pod viaraku --doc=HTMLwhich just use the default template.
render: Render a Pod document from several sources. title, subtitle, and lang are supplied to the Mustache template and override the Pod document's corresponding semantic blocks. A template path can be passed; the Mustache template main.mustache must be under that path. Partials to the template must be under the same path in a directory named partials.
-
render(Array $pod, Str :$title, Str :$subtitle, Str :$lang, Str :$template = Str, *%template-vars) -
render(Pod::Block $pod, Str :$title, Str :$subtitle, Str :$lang, Str :$template = Str, *%template-vars) -
render(IO::Path $file, Str :$title, Str :$subtitle, Str :$lang, Str :$template = Str, *%template-vars) -
render(Str $pod-string, Str :$title, Str :$subtitle, Str :$lang, Str :$template = Str, *%template-vars)
Pod::To::HTML makes the following information available to the Mustache template:
-
title: This is picked up from the Pod's semantic block=TITLE(if any), although it can be overridden by supplying it viarender. It defaults to the empty string. -
subtitle: This is picked up from the Pod's semantic block=SUBTITLE(if any), although it can be overridden by supplying it viarender. It defaults to the empty string. -
lang: This is picked up from the Pod's semantic block=LANG(if any), although it can be overridden by supplying it viarender. It defaults to theen. -
toc: The Pod document's table of contents. -
footnotes: The Pod document's footnotes.
Additional information can be made available to the Mustache template by supplying to render as named arguments.
Semantic blocks are treated as metadata and supplied as such to a Mustache template. For example, from the Pod document:
=begin pod
=TITLE Classes and objects
=SUBTITLE A tutorial about creating and using classes in Raku
=LANG English
=DATE January 01, 2020
=end podThe template variables title, subtitle, lang, and date are made available to a Mustache template. Both title and subtitle can be overridden via the render subroutine.
Note: Pod's semantic blocks can be overridden via render by using a variable of the same name.
Check the examples directory (which should have been installed with your distribution, or is right here if you download from source) for a few illustrative examples.
You can set the RAKUDOC_DEBUG environmental variable to make the module produce some debugging information.
RAKUDOC_DEBUG=1 raku --doc=HTML lib/FancyModule.rakumod > FancyModule.html
-
Anthony Parsons
-
Moritz Lenz
-
Timo Paulssen
-
Alex Moquin
-
Wenzel P. P. Peppmeyer
-
Zoffix Znet
-
Alex Chen
-
JJ Merelo
-
Jonathan Stowe
-
Richard Hainsworth
-
Antonio Gamiz
-
Oleksander Kiryuhin
-
Elizabeth Mattijsen
And many other Raku Community members.
Source can be located at: https://github.com/raku-community-modules/Pod-To-HTML . Comments and Pull Requests are welcome.
Copyright 2011-2025 Raku Community
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.
The META6.json file of this distribution may be distributed and modified without restrictions or attribution.