The Perl Toolchain Summit 2025 Needs You: You can help 🙏 Learn more

$input
Parameters

    $members

Required

    $required

INPUT }

if ($output) {
my $members = $EMPTY;
my $output_shape = $shapes->{$output};
my %shape_members = %{ $output_shape->{members} // {} };
foreach my $m ( sort keys %shape_members ) {
$members .= sprintf "\n=item %s\n", $m;
$members .= html2pod $shape_members{$m}->{documentation};
}
$output = <<"OUTPUT";
$output
Parameters

    $members

OUTPUT }

my @error_items;
if ( @{$errors} ) {
foreach my $e ( @{$errors} ) {
my $shape = $shapes->{$e};
push @error_items, '=over 5';
push @error_items, sprintf "=item %s\n%s", $e, html2pod $shape->{documentation};
if ( $shape->{error} ) {
push @error_items, '=over 5';
foreach my $k ( sort keys %{ $shape->{error} } ) {
push @error_items, sprintf "=item %s\n\n%s", $k, $shape->{error}->{$k};
}
push @error_items, "=back\n";
}
push @error_items, "=back\n";
}
local $LIST_SEPARATOR = "\n\n";
my $error_str = "@error_items";
$errors = <<"ERRORS";

$error_str

ERRORS } else { $errors = $EMPTY; }

my $none = "=over 5\n\n=item NONE\n\n=back\n\n";
$output = $output || $none;
$errors = $errors || $none;
$input = $input || $none;
my $method_pod = <<'END_OF_POD';

@method@

@documentation@

INPUT

@input@

OUTPUT

@output@

ERRORS

@errors@

END_OF_POD

my $http = $methods{$method}->{http};
my $http_method = $EMPTY;
my $request_uri = $EMPTY;
if ($http) {
$http_method = $http->{method} // $EMPTY;
$request_uri = $http->{requestUri} // $EMPTY;
my ( $request_uri_tpl, $args ) = parse_request_uri($request_uri);
$operations->{$method}->{http}->{parsed_request_uri}
= { request_uri_tpl => $request_uri_tpl, parameters => $args };
$method_pod .= <<'END_OF_POD';
METHOD

@http_method@

REQUEST URI

@request_uri@ END_OF_POD }

$method_pod .= <<'END_OF_POD';

END_OF_POD

my @see_also;
push @see_also, $methods{$method}->{input} || ();
push @see_also, $methods{$method}->{output} || ();
push @see_also, map { $_->{shape} } @{ $operations->{$method}->{errors} };
$parameters->{ to_template_var('see_also') } = join "\n",
map { sprintf 'L<%s::%s>', $parameters->{ to_template_var('package_name') }, $_ } @see_also;
$parameters->{ to_template_var('method') } = $method;
$parameters->{ to_template_var('errors') } = $errors;
$parameters->{ to_template_var('input') } = $input;
$parameters->{ to_template_var('output') } = $output;
$parameters->{ to_template_var('http_method') } = $http_method;
$parameters->{ to_template_var('request_uri') } = $request_uri;
$parameters->{ to_template_var('documentation') } = $documentation;
my $package_name = $parameters->{ to_template_var('package_name') };
$package_name =~ s/::/\//gxsm;
push @pod, render_template $method_pod, $parameters;
my $pod_stub = <<'END_OF_POD';
=pod

NAME

@method@

SYNOPSIS

my $service = @package_name@->new;
my $rsp = $service->@method@($parameters);

DESCRIPTION

@documentation@

PARAMETERS

INPUT

@input@

OUTPUT

@output@

ERRORS

@errors@

NOTES

  • Method: @http_method@

  • Request URI: @request_uri@

SEE ALSO

@see_also@

AUTHOR

Autogenerate by @program_name@ on @timestamp@

LICENSE AND COPYRIGHT

This module is free software it may be used, redistributed and/or modified under the same terms as Perl itself.

NAME

@service@

DESCRIPTION

@documentation@

AVAILABLE COMMANDS

@available_commands@

NAME

@package_name@

DESCRIPTION

@description@

VERSION

Version @program_version@

METHODS AND SUBROUTINES

@methods@

NOTES

Autogenerated by @program_name@ at @timestamp@

LICENSE AND COPYRIGHT

This module is free software it may be used, redistributed and/or modified under the same terms as Perl itself.