From 0fa983c4b460407bb400d953ebf966fdc6102755 Mon Sep 17 00:00:00 2001 From: dakkar Date: Tue, 27 Sep 2011 22:45:26 +0100 Subject: seems to work --- dist.ini | 9 ++++++-- lib/Dist/Zilla/Plugin/Boilerplate.pm | 40 +++++++++++++++++++++++++++--------- t/lib/TestModule.pm | 2 +- 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/dist.ini b/dist.ini index a858fb7..7db1a0d 100644 --- a/dist.ini +++ b/dist.ini @@ -9,5 +9,10 @@ version = 0.001 [@Basic] [Boilerplate / foo] -code = our $foo = 1; -code = our $bar = 2; +code_line = our $foo = 1; +code_line = our $bar = 2; + +[Boilerplate / bar] +code_line = use Data::Printer; +code_line = {no strict;p(%{__PACKAGE__.'::'});} + diff --git a/lib/Dist/Zilla/Plugin/Boilerplate.pm b/lib/Dist/Zilla/Plugin/Boilerplate.pm index 4686a22..13b087e 100644 --- a/lib/Dist/Zilla/Plugin/Boilerplate.pm +++ b/lib/Dist/Zilla/Plugin/Boilerplate.pm @@ -24,13 +24,15 @@ with( 'Dist::Zilla::Role::PPI', ); -sub mvp_multivalue_args { 'code' }; -has code => ( +sub mvp_multivalue_args { 'code_line' }; +has code_line => ( is => 'ro', isa => 'ArrayRef[Str]', required => 1, ); +sub code { shift->code_line->join("\n") } + has _parsed_code => ( is => 'ro', isa => 'PPI::Element', @@ -40,7 +42,7 @@ has _parsed_code => ( sub _build_parsed_code { my ($self) = @_; - my $code = $self->code->join("\n"); + my $code = $self->code; PPI::Document->new(\$code); } @@ -81,11 +83,11 @@ sub _find_dzil_root { sub eval_in { my ($self,$package) = @_; - my $code = $self->code->join("\n");my $name = $self->plugin_name; + my $code = $self->code;my $name = $self->plugin_name; my $str = "{package $package;$code;1}"; local $@; eval $str - or $self->log_error("Couldn't eval code for boilerplate $name into $package: $@"); + or $self->log_fatal("Couldn't eval code for boilerplate into $package: $@"); } sub munge_files { @@ -111,7 +113,7 @@ sub munge_file { if ($tags->first(sub{$_ eq $self->plugin_name})) { for my $elem ($self->_parsed_code->children) { $use->insert_before($elem) - or $self->log_warn("Couldn't insert $elem before $use\n"); + or $self->log_fatal("Couldn't insert $elem before $use\n"); } $use->delete; } @@ -122,7 +124,26 @@ sub munge_file { sub _find_tags_from_ppi { my ($self,$node) = @_; - return 'foo'; + if ($node->isa('PPI::Token::Quote')) { + return [$node->string]; + } + elsif ($node->isa('PPI::Token::QuoteLike::Words')) { + return [$node->literal]; + } + elsif ($node->isa('PPI::Token')) { + return [ $node->content ]; # probably wrong + } + elsif ($node->can('find')) { + return [ + ($node->find('PPI::Token::Quote') || []) + ->map(sub{$_->string})->flatten(), + ($node->find('PPI::Token::QuoteLike::Words') || []) + ->map(sub{$_->literal})->flatten, + ]; + } + else { + return [] + } } } package Dist::Zilla::Plugin::Boilerplate::Chrome;{ @@ -135,10 +156,9 @@ has logger => ( log_pid => 0, to_self => 0, to_stdout => 0, - to_stderr => 0, + to_stderr => 1, to_file => 0, - muted => 1, - quiet_fatal => [], + quiet_fatal => 'stderr', }); } ); diff --git a/t/lib/TestModule.pm b/t/lib/TestModule.pm index ebf7dcd..18ddb40 100644 --- a/t/lib/TestModule.pm +++ b/t/lib/TestModule.pm @@ -1,4 +1,4 @@ package TestModule; -use Dist::Zilla::Plugin::Boilerplate 'foo'; +use Dist::Zilla::Plugin::Boilerplate qw(foo),,('bar'); 1; -- cgit v1.2.3