NAME
Pod::To::Man - Render Rakudoc as Roff for man
SYNOPSIS
From the command line:
raku --doc=Man your.rakudoc > your.1
From your scripts:
use Pod::To::Man;
say Pod::To::Man.pod2man($=pod);
DESCRIPTION
Pod::To::Man is a Raku module that converts a given Rakudoc (pod6) structure to formatted *roff input, suitable for displaying via the man(1)
program.
This module also comes with the rakudoc2man
program, which is a front-end to Pod::To::Man that is a more robust alternative to using Pod::To::Man with Raku's builtin --doc
renderer.
Methods
pod2man
method pod2man(
$pod,
Str :$program,
Str :$section,
Date :$date,
Str :$version,
Str :$center,
Bool :$urls,
)
pod2man
converts a given pod structure to *roff, returning the string of formatted *roff.
:$program
will be the name pod2man
will use as the name of the manpage. By default, pod2man
will try to determine the manpage name by looking for the program name specified by any =head1 NAME
or =NAME
blocks/text. If it cannot determine the name to use from those, it will default to the value of $*PROGRAM.basename
.
:$section
will be the manual section pod2man
will use. See man-pages(7)
for more information on the conventions for manpage sections. If $*PROGRAM.basename
ends in the '.pm6'
or '.rakumod'
suffix, the section will be '3rakumod'
. Otherwise, defaults to '1'
.
:$date
is the date to use for the manpage. Defaults to the value of now.Date
.
:$version
is the version to use for the manpage heading. Defaults to $*RAKU.compiler.gist
, which will look something like 'rakudo (20XX.XX)'
.
:$center
is the text to display in the center of the manpage heading. Defaults to "User Contributed Raku Documentation"
.
:$urls
is a boolean determining whether to generate URLs for 'L<>'
links. Defaults to True
.
render
method render($pod)
render
is basically the same thing as pod2man
, but customization is done through environment variables instead of method parameters. This is because it allows the render to be customized when using the --doc
option in Raku. If you're using Pod::To::Man in your code directly, you should just use pod2man
.
The following environment variables are supported, each corresponding to their respective pod2man
parameter.
RAKUDOC2MAN_PROGRAM
RAKUDOC2MAN_SECTION
RAKUDOC2MAN_DATE
RAKUDOC2MAN_VERSION
RAKUDOC2MAN_CENTER
RAKUDOC2MAN_URLS
Most of them accept the same values as their pod2man
counterparts. RAKUDOC2MAN_DATE
must be given a date string following the YYYY-MM-DD
format. RAKUDOC2MAN_URLS
must be given a number, with 0
equating to False
and any non-zero value being True
.
pod2roff
method pod2roff($pod)
This method exists only for compatibility reasons. You should use pod2man
instead.
BUGS
Don't be ridiculous...
Report bugs on this project's GitHub page, https://github.com/1-1sam-org/Pod-To-Man.
AUTHORS
COPYRIGHT AND LICENSE
Copyright © 2019-2022 Mike Clarke
Copyright © 2022, 2025 Raku Community
Copyright © 2025 Samuel Young
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.
SEE ALSO
man(1), roff(1), man(7), man-pages(7)