The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
$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.