NAME

Class::GenSource - Generate Perl source code to declare a class

VERSION

This document describes version 0.06 of Class::GenSource (from Perl distribution Class-GenSource), released on 2015-06-12.

SYNOPSIS

use Class::GenSource qw(gen_class_source_code);

say gen_class_source_code(
    name => 'My::Class',
    attributes => {
        foo => {},
        bar => {default=>3},
        baz => {},
    },
);

Will print something like:

package My::Class;

sub new {
    my $class = shift;
    my $self = bless {@_}, $class;
    $self->{bar} = 3 unless exists $self->{bar};
    $self;
}
sub foo { my $self = shift; $self->{foo} = $_[0] if @_; $self->{foo} }
sub bar { my $self = shift; $self->{bar} = $_[0] if @_; $self->{bar}  }
sub baz { my $self = shift; $self->{baz} = $_[0] if @_; $self->{baz}  }

Another example (generating Moo-based class):

say gen_class_source_code(
    name => 'My::Class',
    attributes => {
        foo => {},
        bar => {default=>3},
        baz => {},
    },
    variant => 'Moo',
);

will print something like:

package My::Class;
use Moo;
has foo => (is=>'rw');
has bar => (is=>'rw', default=>3);
has baz => (is=>'rw');

DESCRIPTION

FUNCTIONS

gen_class_source_code(%args) -> any

Generate Perl source code to declare a class.

Arguments ('*' denotes required arguments):

  • attributes => hash (default: {})

  • name* => str

  • parent => str

  • variant => str (default: "classic")

Return value: (any)

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Class-GenSource.

SOURCE

Source repository is at https://github.com/perlancar/perl-Class-GenSource.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Class-GenSource

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.