NAME
Pod::Utils - Set of helper functions to ease working with Pods!
SYNOPSIS
use Pod::Utils;
# time to work with Pod::* elements!
say first-subtitle($=pod[0].contents);
=begin pod
=SUBTITLE Some cool text
=end pod
DESCRIPTION
Pod::Utils is a set of routines that help you to deal with Pod elements.
It lets you manipulate several kinds of Pod objects, obtain gists and modify
headings.
sub first-code-block
sub first-code-block (
Array @pod
) returns Str;
Returns the first Pod::Block::Code
found in an array, concatenating all lines in it.
If none is found, it will return an empty string.
Example:
=begin pod
=begin code
say "some code";
say "more code";
=end code
=end pod
first-code-block($=pod[0].contents)
# OUTPUT «say "some code";say "more code";»
sub first-title
sub first-title (
Array @pod
) returns Pod::Block::Named;
Returns the first =TITLE
element found in @pods
.
Example:
=begin pod
=TITLE title
=end pod
first-title($=pod[0].contents)
# OUTPUT equivalent to:
=TITLE title
sub first-subtitle
sub first-subtitle (
Array @pod
) returns Pod::Block::Named;
Returns the first =SUBTITLE
element found in @pods
.
Example:
=begin pod
=subTITLE subtitle
=end pod
first-subtitle($=pod[0].contents)
# OUTPUT equivalent to:
=SUBTITLE subtitle
multi sub textify-guts
multi textify-guts (Any:U, ) return Str;
multi textify-guts (Str:D \v) return Str;
multi textify-guts (List:D \v) return Str;
multi textify-guts (Pod::Block \v) return Str;
Converts lists of Pod::Block::*
objects and Pod::Block
objects to strings.
Example:
my $block = Pod::Block::Para.new(contents => ["block"]);
say textify-guts($block); # OUTPUT «block»
say textify-guts([$block, $block]); # OUTPUT «block block»
multi sub recurse-until-str
multi sub recurse-until-str(Str:D $s) return Str;
multi sub recurse-until-str(Pod::Block $n) return Str;
Accepts a Pod::Block::*
object and returns a concatenation of all subpods content.
Example:
my $block = Pod::Block::Para.new(contents => ["block"]);
my $complex-block = pod-block("one", pod-block("two"), pod-bold("three"));
say recurse-until-str($block); # OUTPUT «block»
say recurse-until-str($complex-block); # OUTPUT «onetwothree»
Pod::Utils::Build
SYNOPSIS
use Pod::Utils::Build;
# time to build Pod::* elements!
say pod-bold("bold text");
DESCRIPTION
Pod::Utils::Build is a set of routines that help you to create new
Pod elements.
sub pod-title
sub pod-title (
Str $title,
) returns Pod::Block::Named;
Creates a new Pod::Block::Named
object (with :name
set to "TITLE"
)
and populates it with a Pod::Block::Para
containing $title
.
Example:
pod-title("title");
# OUTPUT Equivalent to:
=begind pod
=TITLE title
=end pod
sub pod-with-title
sub pod-with-title (
Str $title,
Array @blocks
) returns Pod::Block::Named;
Creates a new Pod::Block::Named
object (with :name
set to "pod")
and populate it with a title (using pod-title
) and @blocks
.
Example:
=begind pod
Normal paragraph
=end pod
pod-with-title("title", $=pod.first.contents[0]);
# OUTPUT Equivalent to:
=beging pod
=TITLE title
Normal paragraph
=end pod
sub pod-block
sub pod-block (
Array *@contents
) returns Pod::Block::Para;
Creates a Pod::Block::Para
with contents set to @contents
.
Example:
say pod-block("title", Pod::Block::Para.new(contents => ["paragraph"]));
# OUTPUT
Pod::Block::Para
title
Pod::Block::Para
paragraph
sub pod-link
sub pod-link (
Str $text,
Str $url
) returns Pod::FormattingCode;
Creates a Pod::FormattingCode
(type Link) with contents set to $text
.
and meta set to $url
.
Example:
pod-link("text","url");
# OUTPUT Equivalent to:
L<text|url>
sub pod-bold
sub pod-bold (
Str $text,
) returns Pod::FormattingCode;
Creates a Pod::FormattingCode
(type B) with contents set to $text
.
Example:
pod-bold("text");
# OUTPUT Equivalent to:
B<text>
sub pod-code
sub pod-code (
Str $text,
) returns Pod::FormattingCode;
Creates a Pod::FormattingCode
(type C) with contents set to $text
.
Example:
pod-code("text");
# OUTPUT Equivalent to:
C<text>
sub pod-item
sub pod-item (
Array *@contents ,
Int :$level = 1,
) returns Pod::Item;
Creates a Pod::Item
object with contents set to @contents
and level to $level
.
Example:
pod-item(pod-block("item"), level => 1);
# OUTPUT Equivalent to:
=item item
sub pod-heading
sub pod-heading (
Str $name,
Int :$level = 1,
) returns Pod::Heading;
Creates a Pod::Heading
object with level set $level
and contents initialized
with a Pod::Block::Para
object containing $name
.
Example:
pod-heading("heading", level => 1);
# OUTPUT Equivalent to:
=head1 heading
sub pod-table
sub pod-table (
Array @contents,
Array :@headers,
) returns Pod::Block::Table;
Creates a Pod::Block::Table
object with the headers @headers
and rows @contents
.
$caption
is set to ""
.
Example:
pod-table([["col1", "col2"],], headers => ["h1", "h2"]);
# OUTPUT Equivalent to:
=begin table
h1 | h2
============
col1 | col2
=end table
sub pod-lower-headings
sub pod-lower-headings (
Array @content,
Int :$to,
) returns Array;
Given an array of Pod objects, lower the level of every heading following
the next formula => current-level - $by + $to
, where $by
is the level of the
first heading found in the array.
Example:
my @contents = [
pod-heading("head", level => 2),
pod-heading("head", level => 3)
];
pod-lower-headings(@contents)
# OUTPUT Equivalent to:
=head1 head
=head2 head
AUTHORS
Alexander Mouquin <@Mouq>
Will Coleda <@coke>
Rob Hoelz <@hoelzro>
<@timo>
Moritz Lenz <@moritz>
Juan Julián <@JJ>
<@MasterDuke17>
Zoffix Znet <@zoffixznet>
Antonio <@antoniogamiz>
COPYRIGHT AND LICENSE
Copyright 2019 Perl 6 team
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.