I'm pretty sure that Pod::Eventual has a bug or two related to =cut, but I
haven't written the tests yet because I'm not sure how I want to procede.

This POD:

  This is text.

  =head1 HEADER
  ...and some text.

  =cut
  Text again.

results in something roughly like this:

  { type: text, content: "This is text.\n" }
  { type: command, command: head1, content: "HEADER\n...and some text.\n" }
  { type: command, command: cut,   content: "\n" }
  { type: text, content: "Text again.\n" }

In other words, content that is notionally part of the =cut command (because
there has not yet been a para break) is not made part of the =cut event.
That's because I emulated perl's behavior of going back to Perl on the line
after =cut.

Following perl isn't necessarily the right thing, since when Pod occurs inside
a here-doc it is both part of the Perl document (perl thinks it's in code) and
part of the Pod document (the existing Pod translators pick it up as Pod).

So I think the right thing is to say that content after =cut and before a
paragraph break is part of the =cut commant's content.  (Sure, this is fairly
academic, but it would be nice to reduce the scope of =cut's special casing.)

Also: I know =cut doesn't "take" content or arguments.  That's for a semantic
parser to deal with.  Eventual just finds events.

The other case is this one:


  say "1";

  =cut

  say "2";

  =cut

  say "3";

perl will say 1 and 3.  Does that mean that C<say "2";> is really inside Pod,
or is that a quirk of perl?

If so, is =cut just a misnamed =toggle?

I wonder if perlpod.pod could use some updating.

-- 
rjbs

Reply via email to