Re: raw_data with Pod::Simple::PullParser
[email protected] (Ron Savage) Wed, 29 Mar 2017 17:18:08 +1100
| Newsgroups | perl.pod-people |
|---|---|
| Message-ID | <[email protected]> |
Hi Francois
Do what works. If you're only parsing your own POD, then what you're
doing now should be OK.
I would like (one day!) to write a BNF for POD and use Marpa:
http://savage.net.au/Marpa.html
About 10 of the Perl packages there are mine.
If you intend to create a module fit for CPAN, then of course it's a
bigger decision as to the internal structure of your code.
On 29/03/17 17:09, RAPPAZ Francois via pod-people wrote:
> Hi Ron,
>
> Thanks for the suggestion.
>
> At the end, reading the pod file and capturing the key from head1 is easy (below). I could use a Pod::Simple::SimpleTree , but I would still to have the output as raw pod. Probably using a parser to select pars of pod is not a good idea ?
>
> François
>
> my $fname = shift;
> my $mod;
> open $mod, "<$fname" or die "Can't open $fname $! \n";
> my %data;
> my $data_ar;
> my $key;
> my $ispod;
> for my $line (<$mod>) {
> chomp $line;
> if ( $line =~ /^=cut/ ) { $ispod = 0; }
> if ( $line =~ /^=head1\s*(.+)$/i ) {
> $ispod = 1;
> if ($key) { #$key read from the previous =head1
> $data{$key} = $data_ar; #store the array of lines as an array ref
> $data_ar = undef; # and prepare a new array
> }
> $key = $1; #now fetch the new value for $key
> }
> push @{$data_ar}, $line if ($ispod) ; #store the line in the array if we are in a pod section
>
> }
> close $mod;
> $data{$key} = $data_ar; #fetch the lines from the last =head1 read
> =for comment
> for $key ( keys %data ) {
> print "*$key*\n";
> print join( "\n", @{ $data{$key} } ), "\n";
>
> }
> =cut
> return %data;
>
> -----Original Message-----
> From: Ron Savage [mailto:[email protected]]
> Sent: 28 March 2017 23:36
> To: [email protected]
> Subject: Re: raw_data with Pod::Simple::PullParser
>
> Hi François
>
> Can't help specifically but I do suggest you use a tree rather than a hash. It just makes much more sense to me to store the pod that way.
>
> --
> Ron Savage - savage.net.au
>
--
Ron Savage - savage.net.au