| Dist-Zilla documentation | Contained in the Dist-Zilla distribution. |
Dist::Zilla::Plugin::TemplateModule - a simple module-from-template plugin
version 4.200008
This is a ModuleMaker used for creating new
Perl modules files when minting a new dist with dzil new. It uses
Text::Template (via Dist::Zilla::Role::TextTemplate) to render a template
into a Perl module. The template is given two variables for use in rendering:
$name, the module name; and $dist, the Dist::Zilla object. The module is
always created as a file under ./lib.
By default, the template looks something like this:
use strict;
use warnings;
package {{ $name }};
1;
The template parameter may be given to the plugin to provide a different
filename, absolute or relative to the build root.
Ricardo SIGNES <rjbs@cpan.org>
This software is copyright (c) 2011 by Ricardo SIGNES.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
| Dist-Zilla documentation | Contained in the Dist-Zilla distribution. |
package Dist::Zilla::Plugin::TemplateModule; BEGIN { $Dist::Zilla::Plugin::TemplateModule::VERSION = '4.200008'; } # ABSTRACT: a simple module-from-template plugin use Moose; with qw(Dist::Zilla::Role::ModuleMaker Dist::Zilla::Role::TextTemplate); use autodie; use Data::Section 0.004 -setup; # fixed header_re use Dist::Zilla::File::InMemory; has template => ( is => 'ro', isa => 'Str', predicate => 'has_template', ); sub make_module { my ($self, $arg) = @_; my $template; if ($self->has_template) { open my $fh, '<', $self->template; # Win32 binmode $fh, ':raw'; $template = do { local $/; <$fh> }; } else { $template = ${ $self->section_data('Module.pm') }; } my $content = $self->fill_in_string( $template, { dist => \($self->zilla), name => $arg->{name}, }, ); (my $filename = $arg->{name}) =~ s{::}{/}g; my $file = Dist::Zilla::File::InMemory->new({ name => "lib/$filename.pm", content => $content, }); $self->add_file($file); } __PACKAGE__->meta->make_immutable; no Moose; 1;
__DATA__ __[ Module.pm ]__ use strict; use warnings; package {{ $name }}; 1;