📄 podparser.pm
字号:
package Module::Build::PodParser;use strict;use vars qw($VERSION);$VERSION = '0.2808_01';$VERSION = eval $VERSION;use vars qw(@ISA);sub new { # Perl is so fun. my $package = shift; my $self; # Try using Pod::Parser first if (eval{ require Pod::Parser; 1; }) { @ISA = qw(Pod::Parser); $self = $package->SUPER::new(@_); $self->{have_pod_parser} = 1; } else { @ISA = (); *parse_from_filehandle = \&_myparse_from_filehandle; $self = bless {have_pod_parser => 0, @_}, $package; } unless ($self->{fh}) { die "No 'file' or 'fh' parameter given" unless $self->{file}; $self->{fh} = IO::File->new($self->{file}) or die "Couldn't open $self->{file}: $!"; } return $self;}sub _myparse_from_filehandle { my ($self, $fh) = @_; local $_; while (<$fh>) { next unless /^=(?!cut)/ .. /^=cut/; # in POD last if ($self->{abstract}) = /^ (?: [a-z:]+ \s+ - \s+ ) (.*\S) /ix; } my @author; while (<$fh>) { next unless /^=head1\s+AUTHORS?/ ... /^=/; next if /^=/; push @author, $_ if /\@/; } return unless @author; s/^\s+|\s+$//g foreach @author; $self->{author} = \@author; return;}sub get_abstract { my $self = shift; return $self->{abstract} if defined $self->{abstract}; $self->parse_from_filehandle($self->{fh}); return $self->{abstract};}sub get_author { my $self = shift; return $self->{author} if defined $self->{author}; $self->parse_from_filehandle($self->{fh}); return $self->{author} || [];}################## Pod::Parser overrides ###########sub initialize { my $self = shift; $self->{_head} = ''; $self->SUPER::initialize();}sub command { my ($self, $cmd, $text) = @_; if ( $cmd eq 'head1' ) { $text =~ s/^\s+//; $text =~ s/\s+$//; $self->{_head} = $text; }}sub textblock { my ($self, $text) = @_; $text =~ s/^\s+//; $text =~ s/\s+$//; if ($self->{_head} eq 'NAME') { my ($name, $abstract) = split( /\s+-\s+/, $text, 2 ); $self->{abstract} = $abstract; } elsif ($self->{_head} =~ /^AUTHORS?$/) { push @{$self->{author}}, $text if $text =~ /\@/; }}sub verbatim {}sub interior_sequence {}1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -