On Fri Apr 17 13:29:57 2009, cotto wrote:
> On Fri Apr 17 13:24:13 2009, julianalbo wrote:
> > > I propose rejecting this ticket as unnecessary.  The code may not be
> > > optimal, but it works fine and isn't even particularly hacky or
broken.
> > 
> > +1
> > 
> > 
> 
> rejected!

In the course of working on RT 43683, I came across the inline comment
which was the pretext for creating this ticket in the first place.  It
was not removed when the ticket was rejected.  And since I was doing
some refactoring for the other ticket, I decided to deal with the issue
in this ticket.

Please see patch attached.  I'll apply it after this month's release
unless someone objects.

Index: lib/Parrot/Docs/File.pm
===================================================================
--- lib/Parrot/Docs/File.pm	(revision 38663)
+++ lib/Parrot/Docs/File.pm	(working copy)
@@ -380,45 +380,20 @@
     return '' unless $self->contains_pod;
 
     my @lines = $self->read;
+    my $firstline = shift @lines;
+    return $self->title unless $firstline =~ /^=head1\s+ABSTRACT/;
 
-    while (@lines) {
-        my $line = shift @lines;
-
-        if ( $line =~ /^=head1\s+ABSTRACT/o ) {
-            while (@lines) {
-                $line = shift @lines;
-
-                last if $line =~ /\S/o;
-            }
-
-            my @abstract_text = $line;
-
-            while (@lines) {
-                $line = shift @lines;
-
-                last if $line !~ /\S/o;
-
-                push @abstract_text, $line;
-            }
-
-            my $desc = join ' ', @abstract_text;
-
-            # Joining lines may have created a bit of extra whitespace.
-            $desc =~ s/\s+/ /osg;
-            $desc =~ s/^\s+//os;
-            $desc =~ s/\s+$//os;
-
-            # Remove any POD.
-            $desc =~ s/[CFL]<([^>]+)>/$1/osg;
-
-            return $desc;
-        }
-    }
-
-    # RT#43687 - The abstract section above was added later. The two searches
-    # could be combined.
-
-    return $self->title;
+    my $all_text = join "\n" => @lines;
+    $all_text =~ s/^\s+//;
+    my @paragraphs = split /\n{2,}/, $all_text;
+    my $desc;
+    # For a short description, we take only the first paragraph of any
+    # ABSTRACT.
+    ($desc = $paragraphs[0]) =~ s/\n/ /g; 
+    $desc =~ s/\s+/ /sg;
+    # We eliminate certain POD formatting characters.
+    $desc =~ s/[CFL]<([^>]+)>/$1/sg;
+    return $desc;
 }
 
 =back

Reply via email to