X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=maint%2Fsynopsis-extractor;h=fb679660a06d089626b910db76a7b3ad0a377020;hb=8d36d8cbdd5d584f36965479eca0bd09543a0950;hp=f23a99981a3287465c836a86b56e22ed59ad117e;hpb=6330577f9b87576d25c819b1e061a4cb6d962085;p=catagits%2FHTML-Zoom.git diff --git a/maint/synopsis-extractor b/maint/synopsis-extractor index f23a999..fb67966 100755 --- a/maint/synopsis-extractor +++ b/maint/synopsis-extractor @@ -9,7 +9,7 @@ use File::Spec; sub slurp_file { undef $/; - open(my $fh, '<', shift); + open(my $fh, '<', shift) || return; if(my $whole_file = <$fh>) { return $whole_file; } else { @@ -21,7 +21,12 @@ sub extract_synopsis { my $string = shift || return; my $head_or_cut = qr[head|cut]x; if($string=~m/^=head1 SYNOPSIS\n(.*?)^=$head_or_cut/sm) { - return $1; + my $extracted = $1; + $extracted=~s/^\S.+?$//m; # wipe out non code lines in pod + my $begin_end = qr[begin|end]x; + $extracted=~s/\n^=$begin_end testinfo\n\n//smg; # remove + + return $extracted; } else { return; } @@ -29,8 +34,7 @@ sub extract_synopsis { sub normalize_indent { my $extracted = shift || return; - - if($extracted=~m/([ \t]+)(\S+)/) { + if($extracted=~m/([ \t]+)(\S+)/) { $extracted=~s/^$1//gsm; return $extracted; } else { @@ -54,24 +58,28 @@ sub create_test_path_from_lib { return File::Spec->catfile($Bin, '..', 't', 'synopsis', lc($module_name).'.t'); } -sub create_or_update_test { - my ($string, $target) = @_; - return unless $string && $target; +sub create_or_update_test_file { + my ($target, $synopsis_string) = @_; + return unless $synopsis_string && $target; print "Writing $target\n"; open my $syn_test, '>', $target or die "Couldn't open $target - you screwed something up. Go fix it.\n"; - print $syn_test $string; + print $syn_test $synopsis_string; } find(sub { - return unless $_=~/pm$/; - create_or_update_test( - (create_test_string + my $target_path = + create_test_path_from_lib $_; + my $synopsis_string = + create_test_string normalize_indent extract_synopsis - slurp_file $File::Find::name), - create_test_path_from_lib($_), - ); -}, File::Spec->catfile($Bin, '..', 'lib')); + slurp_file $File::Find::name; + + create_or_update_test_file + $target_path, + $synopsis_string, + + }, File::Spec->catfile($Bin, '..', 'lib'));