X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FPod%2FConstants.pm;h=05f33a0dde37fccb559886090e1c1dc4ba596d31;hb=9aac1ccbb0418badac4156ad5da0edf3231d1713;hp=3395a9c2652bafb209f56e6b88ba6ea164f0a127;hpb=222de36b21744261a96964f0c34622d66dd8af04;p=pod-constants.git diff --git a/lib/Pod/Constants.pm b/lib/Pod/Constants.pm index 3395a9c..05f33a0 100644 --- a/lib/Pod/Constants.pm +++ b/lib/Pod/Constants.pm @@ -10,7 +10,6 @@ use strict; use warnings; use base qw(Pod::Parser Exporter); -use Data::Dumper; use Carp; our $VERSION = 0.17; @@ -25,36 +24,32 @@ sub end_input { return unless $parser->{active}; - print "Found end of $parser->{active}\n" if ($parser->{DEBUG}); + print "Found end of $parser->{active}\n" if $parser->{DEBUG}; my $whereto = $parser->{wanted_pod_tags}->{$parser->{active}}; - print "\$_ will be set to:\n---\n$parser->{paragraphs}\n---\n" - if ($parser->{DEBUG}); + print "\$_ will be set to:\n---\n$parser->{paragraphs}\n---\n" if $parser->{DEBUG}; - $parser->{paragraphs} =~ s/^\s*|\s*$//gs - if $parser->{trimmed_tags}->{$parser->{active}}; + $parser->{paragraphs} =~ s/^\s*|\s*$//gs if $parser->{trimmed_tags}->{$parser->{active}}; - if (ref $whereto eq "CODE") { + if (ref $whereto eq 'CODE') { print "calling sub\n" if $parser->{DEBUG}; local ($_) = $parser->{paragraphs}; $whereto->(); print "done\n" if $parser->{DEBUG}; - } elsif (ref $whereto eq "SCALAR") { + } elsif (ref $whereto eq 'SCALAR') { print "inserting into scalar\n" if $parser->{DEBUG}; $$whereto = $parser->{paragraphs}; - } elsif (ref $whereto eq "ARRAY") { + } elsif (ref $whereto eq 'ARRAY') { print "inserting into array\n" if $parser->{DEBUG}; @$whereto = split /\n/, $parser->{paragraphs}; - } elsif (ref $whereto eq "HASH") { + } elsif (ref $whereto eq 'HASH') { print "inserting into hash\n" if $parser->{DEBUG}; # Oh, sorry, should I be in LISP101? - %$whereto = (map { map { s/^\s*|\s*$//g; $_ } - split /=>/, $_ } - grep m/^ - ( (?:[^=]|=[^>])+ ) # scan up to "=>" - => - ( (?:[^=]|=[^>])+ =? )# don't allow more "=>"'s - $/x, - split /\n/, $parser->{paragraphs}); + %$whereto = ( + map { map { s/^\s*|\s*$//g; $_ } split /=>/ } grep m/^ + ( (?:[^=]|=[^>])+ ) # scan up to "=>" + => + ( (?:[^=]|=[^>])+ =? )# don't allow more "=>"'s + $/x, split /\n/, $parser->{paragraphs},); } else { die $whereto } $parser->{active} = undef; } @@ -65,50 +60,38 @@ sub command { $paragraph =~ s/(?:\r\n|\n\r)/\n/g; - print "Got command =$command, value=$paragraph\n" - if $parser->{DEBUG}; + print "Got command =$command, value=$paragraph\n" if $parser->{DEBUG}; $parser->end_input() if $parser->{active}; - my $does_she_want_it_sir; - my ($lookup); # first check for a catch-all for this command type if ( exists $parser->{wanted_pod_tags}->{"*$command"} ) { $parser->{paragraphs} = $paragraph; $parser->{active} = "*$command"; - $does_she_want_it_sir = "oohw"; - } elsif ($command =~ m/^(head\d+|item|(for|begin))$/) { if ( $2 ) { # if it's a "for" or "begin" section, the title is the # first word only - ($lookup, $parser->{paragraphs}) = - ($paragraph =~ m/^\s*(\S*)\s*(.*)/s); + ($lookup, $parser->{paragraphs}) = $paragraph =~ m/^\s*(\S*)\s*(.*)/s; } else { # otherwise, it's up to the end of the line - ($lookup, $parser->{paragraphs}) - = ($paragraph =~ m/^\s*(\S[^\n]*?)\s*\n(.*)$/s); + ($lookup, $parser->{paragraphs}) = $paragraph =~ m/^\s*(\S[^\n]*?)\s*\n(.*)$/s; } # Look for a match by name - if (defined $lookup - and exists $parser->{wanted_pod_tags}->{$lookup}) { + if (defined $lookup && exists $parser->{wanted_pod_tags}->{$lookup}) { print "Found $lookup\n" if ($parser->{DEBUG}); $parser->{active} = $lookup; - $does_she_want_it_sir = "suits you sir"; + } elsif ($parser->{DEBUG}) { + local $^W = 0; + print "Ignoring =$command $paragraph (lookup = $lookup)\n" } } else { # nothing print "Ignoring =$command (not known)\n" if $parser->{DEBUG}; } - - { - local $^W = 0; - print "Ignoring =$command $paragraph (lookup = $lookup)\n" - if (!$does_she_want_it_sir and $parser->{DEBUG}) - } } # Pod::Parser overloaded verbatim @@ -116,13 +99,10 @@ sub verbatim { my ($parser, $paragraph, $line_num) = @_; $paragraph =~ s/(?:\r\n|\n\r)/\n/g; - print("Got paragraph: $paragraph (" - .($parser->{active}?"using":"ignoring").")\n") - if $parser->{DEBUG}; + my $status = $parser->{active} ? 'using' : 'ignoring'; + print "Got paragraph: $paragraph ($status)\n" if $parser->{DEBUG}; - if (defined $parser->{active}) { - $parser->{paragraphs} .= $paragraph; - } + $parser->{paragraphs} .= $paragraph if defined $parser->{active} } # Pod::Parser overloaded textblock @@ -136,15 +116,13 @@ sub import { # try to guess the source file of the caller my $source_file; - if (caller ne "main") { - (my $module = caller().".pm") =~ s|::|/|g; + if (caller ne 'main') { + (my $module = caller.'.pm') =~ s|::|/|g; $source_file = $INC{$module}; } $source_file ||= $0; - ( -f $source_file ) - or croak ("Cannot find source file (guessed $source_file) for" - ." package ".caller()); + croak "Cannot find source file (guessed $source_file) for package ".caller unless -f $source_file; # nasty tricks with the stack so we don't have to be silly with # caller() @@ -152,8 +130,6 @@ sub import { goto \&import_from_file; } -use IO::Handle; - sub import_from_file { my $filename = shift; @@ -168,11 +144,8 @@ sub import_from_file { $parser->add_hook(@_); - print "Pod::Parser: DEBUG: Opening $filename for reading\n" - if $parser->{DEBUG}; - my $fh = new IO::Handle; - open $fh, "<$filename" - or die ("cannot open $filename for reading; $!"); + print "Pod::Parser: DEBUG: Opening $filename for reading\n" if $parser->{DEBUG}; + open my $fh, '<', $filename or croak "cannot open $filename for reading; $!"; $parser->parse_from_filehandle($fh, \*STDOUT); @@ -181,33 +154,27 @@ sub import_from_file { sub add_hook { my $parser; - if ( UNIVERSAL::isa($_[0], __PACKAGE__) ) { + if (eval { $_[0]->isa(__PACKAGE__) }) { $parser = shift; } else { - $parser = $parsers{caller()} - or die("add_hook called, but don't know what for - " - ."caller = ".caller()); + $parser = $parsers{caller()} or croak 'add_hook called, but don\'t know what for - caller = '.caller; } while (my ($pod_tag, $var) = splice @_, 0, 2) { #print "$pod_tag: $var\n"; - if (lc($pod_tag) eq "-trim") { + if (lc($pod_tag) eq '-trim') { $parser->{trim_next} = $var; - } elsif ( lc($pod_tag) eq "-debug" ) { + } elsif ( lc($pod_tag) eq '-debug' ) { $parser->{DEBUG} = $var; - } elsif (lc($pod_tag) eq "-usage") { + } elsif (lc($pod_tag) eq '-usage') { # an idea for later - automatic "usage" #%wanted_pod_tags{@tags} } else { if ((ref $var) =~ /^(?:SCALAR|CODE|ARRAY|HASH)$/) { - print "Will look for $pod_tag.\n" - if ($parser->{DEBUG}); + print "Will look for $pod_tag.\n" if $parser->{DEBUG}; $parser->{wanted_pod_tags}->{$pod_tag} = $var; - $parser->{trimmed_tags}->{$pod_tag} = 1 - if $parser->{trim_next}; + $parser->{trimmed_tags}->{$pod_tag} = 1 if $parser->{trim_next}; } else { - die ("Sorry - need a reference to import POD " - ."sections into, not the scalar value $var" - ." importing $pod_tag into ".caller()); + croak "Sorry - need a reference to import POD sections into, not the scalar value $var" } } } @@ -215,12 +182,10 @@ sub add_hook { sub delete_hook { my $parser; - if ( UNIVERSAL::isa($_[0], __PACKAGE__) ) { + if (eval { $_[0]->isa(__PACKAGE__) }) { $parser = shift; } else { - $parser = $parsers{caller()} - or die("delete_hook called, but don't know what for - " - ."caller = ".caller()); + $parser = $parsers{caller()} or croak 'delete_hook called, but don\'t know what for - caller = '.caller; } while ( my $label = shift ) { delete $parser->{wanted_pod_tags}->{$label}; @@ -228,7 +193,7 @@ sub delete_hook { } } -1.4142; +1; __END__ =encoding utf-8 @@ -239,7 +204,7 @@ Pod::Constants - Include constants from POD =head1 SYNOPSIS - our ($myvar $VERSION @myarray $html %myhash); + our ($myvar, $VERSION, @myarray, $html, %myhash); use Pod::Constants -trim => 1, 'Pod Section Name' => \$myvar,