AsposeCellsCloud::Role::AutoDoc(3pm)

NAME
@* $myclass

VERSION

  @* version: @* $app_name, $app_version
Automatically generated by the Perl Swagger Codegen project:

Build date: @* $generated_date
Build package: @* $generator_class
Codegen version:

INHERITANCE

  Base class(es)
@* $isa

  Direct subclasses
@* $dsub

  All subclasses
@* $sub

COMPOSITION
@* composes the following roles: $myclass

.
    format ROLES_POD = =head2 "@*"
       $rolepkg

Requires:

@* $role_reqs

.
    format ROLES_POD_CLOSE =

. # ----- / format specs ----- }

sub _printmethods {
    my ($self, $how) = @_;

        if ($how eq 'narrow') {
                print <<HEAD;
METHODS
-------
HEAD
        }
        elsif ($how eq 'wide') {
                $~ = 'METHODHEAD';
                write;
        }
        elsif ($how eq 'pod') {
                $~ = 'METHODHEAD_POD';
                write;
        }
        else {
                die "Don't know how to print '$how'";
        }

        $self->_printmethod($_, $how) for uniq sort $self->meta->get_all_method_names; #$self->meta->get_method_list,

        if ($how eq 'pod') {
                $~ = 'METHOD_POD_CLOSE';
                write;
        }

}

sub _printmethod {
    my ($self, $methodname, $how) = @_;
    return if $methodname =~ /^_/;
    return if $self->meta->has_attribute($methodname);
    my %internal = map {$_ => 1} qw(BUILD BUILDARGS meta can new DEMOLISHALL DESTROY
        DOES isa BUILDALL does VERSION dump
        );
    return if $internal{$methodname};
    my $method = $self->meta->get_method($methodname) or return; # symbols imported into namespaces i.e. not known by Moose

        return if $method->original_package_name eq __PACKAGE__;

        my $delegate_to = '';
        my $via = '';
        my $on = '';
        my $doc = '';
        my $original_pkg = $method->original_package_name;
        if ($method->can('associated_attribute')) {
                $delegate_to = $method->delegate_to_method;
                my $aa = $method->associated_attribute;
                $on = $aa->{isa};
                $via = $aa->{name};
                $original_pkg = $on;
                $doc = $original_pkg->method_documentation->{$delegate_to}->{summary};
        }
        else {
            $doc = $method->documentation;
        }

        if ($how eq 'narrow') {
                $~ = 'METHOD_NARROW';
                write;
        }
        elsif ($how eq 'pod' and $delegate_to) {
                $~ = 'METHOD_POD_DELEGATED';
                write;
        }
        elsif ($how eq 'pod') {
                $~ = 'METHOD_POD';
                write;
        }
        else {
                $~ = 'METHOD';
                write;
        }

# ----- format specs -----
    format METHODHEAD =

METHODS ------- Name delegates to on via =========================================================================================================================================================================== .
    format METHOD = @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<... @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<... @<<<<<<<<<<<<<<<<... $methodname, $delegate_to, $on, $via .

        format METHOD_NARROW =
@*
$methodname
    original pkg: @*
                  $original_pkg
    delegates to: @*
                  $delegate_to
              on: @*
                  $on
             via: @*
                  $via

.

        format METHODHEAD_POD =

METHODS
.

        format METHOD_POD =

  "@*()" $methodname
       Defined in: @*
            $original_pkg

.
    format METHOD_POD_DELEGATED =

  "@*()" $methodname
       Defined in: @*
                   $original_pkg
     Delegates to: @*()
                   $delegate_to
               On: @*
                   $on
              Via: @*()
                   $via
              Doc: @*
                   $doc
          Same as: $self->@*->@*()
                     $via, $delegate_to

.
    format METHOD_POD_CLOSE =

. # ----- / format specs ----- }

sub _printattrs {
    my ($self, $how) = @_;

        if ($how eq 'narrow') {
                print <<HEAD;
ATTRIBUTES
----------
HEAD
        }
        elsif ($how eq 'wide') {
                $~ = 'ATTRHEAD';
                write;
        }
        elsif ($how eq 'pod') {
                $~ = 'ATTRHEAD_POD';
                write;
        }
        else {
                die "Don't know how to print attributes '$how'";
        }

        $self->_printattr($_, $how) for sort $self->meta->get_attribute_list;

        if ($how eq 'pod') {
                $~ = 'ATTR_POD_CLOSE';
                write;
        }
}

sub _printattr {
    my ($self, $attrname, $how) = @_;
    return if $attrname =~ /^_/;
    my $attr = $self->meta->get_attribute($attrname) or die "No attr for $attrname";

        my $is;
        $is = 'rw' if $attr->get_read_method && $attr->get_write_method;
        $is = 'ro' if $attr->get_read_method && ! $attr->get_write_method;
        $is = 'wo' if $attr->get_write_method && ! $attr->get_read_method;
        $is = '--' if ! $attr->get_write_method && ! $attr->get_read_method;
        $is or die "No \$is for $attrname";

        my $tc = $attr->type_constraint || '';
        my $from = $attr->associated_class->name || '';
        my $reqd = $attr->is_required ? 'yes' : 'no';
        my $lazy = $attr->is_lazy ? 'yes' : 'no';
        my $has_doc = $attr->has_documentation ? 'yes' : 'no'; # *_api attributes will never have doc, but other attributes might have
        my $doc = $attr->documentation || '';
        my $handles = join ', ', sort @{$attr->handles || []};
        $handles ||= '';

        if ($how eq 'narrow') {
                $~ = 'ATTR_NARROW';
        }
        elsif ($how eq 'pod') {
                $~ = 'ATTR_POD';
        }
        else {
                $~ = 'ATTR';
        }

        write;

# ----- format specs -----
    format ATTRHEAD =

ATTRIBUTES ---------- Name is isa reqd lazy doc handles ============================================================================================================== .
    format ATTR = @<<<<<<<<<<<<<<<<< @< @<<<<<<<<<<<<<<<<<<<<<<<< @<<< @<<< @<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< $attrname, $is, $tc, $reqd, $lazy, $has_doc, $handles
                        ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~
                        $handles .

        format ATTR_NARROW =
@*
$attrname
         is: @*
             $is
        isa: @*
             $tc
       reqd: @*
             $reqd
       lazy: @*
             $lazy
        doc: @*
             $doc
    handles: ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             $handles
             ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~
             $handles

.
    format ATTRHEAD_POD = =head1 ATTRIBUTES

.
    format ATTR_POD =

  "@*" $attrname
         is: @*
             $is
        isa: @*
             $tc
       reqd: @*
             $reqd
       lazy: @*
             $lazy
        doc: @*
             $doc
    handles: ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
             $handles
             ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~
             $handles

.
    format ATTR_POD_CLOSE =

. # ----- / format specs ----- }

1;