puller.t
来自「source of perl for linux application,」· T 代码 · 共 359 行
T
359 行
BEGIN { if($ENV{PERL_CORE}) { chdir 't'; @INC = '../lib'; }}use strict;use Test;BEGIN { plan tests => 136 };#use Pod::Simple::Debug (5);#sub Pod::Simple::MANY_LINES () {1}#sub Pod::Simple::PullParser::DEBUG () {1}use Pod::Simple::PullParser;sub pump_it_up { my $p = Pod::Simple::PullParser->new; $p->set_source( \( $_[0] ) ); my(@t, $t); while($t = $p->get_token) { push @t, $t } print "# Count of tokens: ", scalar(@t), "\n"; print "# I.e., {", join("\n# + ", map ref($_) . ": " . $_->dump, @t), "} \n"; return @t;}my @t;#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@t = pump_it_up(qq{\n\nProk\n\n=head1 Things\n\n=cut\n\nBzorch\n\n});if(not( ok scalar( grep { ref $_ and $_->can('type') } @t), 5)) { ok 0,1, "Wrong token count. Failing subsequent tests.\n"; for ( 1 .. 12 ) {ok 0}} else { ok $t[0]->type, 'start'; ok $t[1]->type, 'start'; ok $t[2]->type, 'text'; ok $t[3]->type, 'end'; ok $t[4]->type, 'end'; ok $t[0]->tagname, 'Document'; ok $t[1]->tagname, 'head1'; ok $t[2]->text, 'Things'; ok $t[3]->tagname, 'head1'; ok $t[4]->tagname, 'Document'; ok $t[0]->attr('start_line'), '5'; ok $t[1]->attr('start_line'), '5';}#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@t = pump_it_up( qq{Woowoo\n\n=over\n\n=item *\n\nStuff L<HTML::TokeParser>\n\n} . qq{=item *\n\nThings I<like that>\n\n=back\n\n=cut\n\n});if( not( ok scalar( grep { ref $_ and $_->can('type') } @t) => 16 )) { ok 0,1, "Wrong token count. Failing subsequent tests.\n"; for ( 1 .. 32 ) {ok 0}} else { ok $t[ 0]->type, 'start'; ok $t[ 1]->type, 'start'; ok $t[ 2]->type, 'start'; ok $t[ 3]->type, 'text'; ok $t[ 4]->type, 'start'; ok $t[ 5]->type, 'text'; ok $t[ 6]->type, 'end'; ok $t[ 7]->type, 'end'; ok $t[ 8]->type, 'start'; ok $t[ 9]->type, 'text'; ok $t[10]->type, 'start'; ok $t[11]->type, 'text'; ok $t[12]->type, 'end'; ok $t[13]->type, 'end'; ok $t[14]->type, 'end'; ok $t[15]->type, 'end'; ok $t[ 0]->tagname, 'Document'; ok $t[ 1]->tagname, 'over-bullet'; ok $t[ 2]->tagname, 'item-bullet'; ok $t[ 3]->text, 'Stuff '; ok $t[ 4]->tagname, 'L'; ok $t[ 5]->text, 'HTML::TokeParser'; ok $t[ 6]->tagname, 'L'; ok $t[ 7]->tagname, 'item-bullet'; ok $t[ 8]->tagname, 'item-bullet'; ok $t[ 9]->text, 'Things '; ok $t[10]->tagname, 'I'; ok $t[11]->text, 'like that'; ok $t[12]->tagname, 'I'; ok $t[13]->tagname, 'item-bullet'; ok $t[14]->tagname, 'over-bullet'; ok $t[15]->tagname, 'Document'; ok $t[4]->attr("type"), "pod";}#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{print "# Testing unget_token\n";my $p = Pod::Simple::PullParser->new;$p->set_source( \qq{\nBzorch\n\n=pod\n\nLala\n\n\=cut\n} );ok 1;my $t;$t = $p->get_token;ok $t && $t->type, 'start';ok $t && $t->tagname, 'Document';print "# ungetting ($t).\n";$p->unget_token($t);ok 1;$t = $p->get_token;ok $t && $t->type, 'start';ok $t && $t->tagname, 'Document';my @to_save = ($t);$t = $p->get_token;ok $t && $t->type, 'start';ok $t && $t->tagname, 'Para';push @to_save, $t;print "# ungetting (@to_save).\n";$p->unget_token(@to_save);splice @to_save;$t = $p->get_token;ok $t && $t->type, 'start';ok $t && $t->tagname, 'Document';$t = $p->get_token;ok $t && $t->type, 'start';ok $t && $t->tagname, 'Para';ok 1;}#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{print "# Testing pullparsing from an arrayref\n";my $p = Pod::Simple::PullParser->new;ok 1;$p->set_source( ['','Bzorch', '','=pod', '', 'Lala', 'zaza', '', '=cut'] );ok 1;my( @t, $t );while($t = $p->get_token) { print "# Got a token: ", $t->dump, "\n#\n"; push @t, $t;}ok scalar(@t), 5; # count of tokensok $t[0]->type, 'start';ok $t[1]->type, 'start';ok $t[2]->type, 'text';ok $t[3]->type, 'end';ok $t[4]->type, 'end';ok $t[0]->tagname, 'Document';ok $t[1]->tagname, 'Para';ok $t[2]->text, 'Lala zaza';ok $t[3]->tagname, 'Para';ok $t[4]->tagname, 'Document';}#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{print "# Testing pullparsing from an arrayref with terminal newlines\n";my $p = Pod::Simple::PullParser->new;ok 1;$p->set_source( [ map "$_\n", '','Bzorch', '','=pod', '', 'Lala', 'zaza', '', '=cut'] );ok 1;my( @t, $t );while($t = $p->get_token) { print "# Got a token: ", $t->dump, "\n#\n"; push @t, $t;}ok scalar(@t), 5; # count of tokensok $t[0]->type, 'start';ok $t[1]->type, 'start';ok $t[2]->type, 'text';ok $t[3]->type, 'end';ok $t[4]->type, 'end';ok $t[0]->tagname, 'Document';ok $t[1]->tagname, 'Para';ok $t[2]->text, 'Lala zaza';ok $t[3]->tagname, 'Para';ok $t[4]->tagname, 'Document';}#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~END { unlink "temp.pod" }{print "# Testing pullparsing from a file\n";my $p = Pod::Simple::PullParser->new;ok 1;open(OUT, ">temp.pod") || die "Can't write-open temp.pod: $!";print OUT map "$_\n", '','Bzorch', '','=pod', '', 'Lala', 'zaza', '', '=cut';close(OUT);ok 1;sleep 1;$p->set_source("temp.pod");my( @t, $t );while($t = $p->get_token) { print "# Got a token: ", $t->dump, "\n#\n"; push @t, $t; print "# That's token number ", scalar(@t), "\n";}ok scalar(@t), 5; # count of tokensok $t[0]->type, 'start';ok $t[1]->type, 'start';ok $t[2]->type, 'text';ok $t[3]->type, 'end';ok $t[4]->type, 'end';ok $t[0]->tagname, 'Document';ok $t[1]->tagname, 'Para';ok $t[2]->text, 'Lala zaza';ok $t[3]->tagname, 'Para';ok $t[4]->tagname, 'Document';}# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~{print "# Testing pullparsing from a glob\n";my $p = Pod::Simple::PullParser->new;ok 1;open(IN, "<temp.pod") || die "Can't read-open temp.pod: $!";$p->set_source(*IN);my( @t, $t );while($t = $p->get_token) { print "# Got a token: ", $t->dump, "\n#\n"; push @t, $t; print "# That's token number ", scalar(@t), "\n";}ok scalar(@t), 5; # count of tokensok $t[0]->type, 'start';ok $t[1]->type, 'start';ok $t[2]->type, 'text';ok $t[3]->type, 'end';ok $t[4]->type, 'end';ok $t[0]->tagname, 'Document';ok $t[1]->tagname, 'Para';ok $t[2]->text, 'Lala zaza';ok $t[3]->tagname, 'Para';ok $t[4]->tagname, 'Document';close(IN);}# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~{print "# Testing pullparsing from a globref\n";my $p = Pod::Simple::PullParser->new;ok 1;open(IN, "<temp.pod") || die "Can't read-open temp.pod: $!";$p->set_source(\*IN);my( @t, $t );while($t = $p->get_token) { print "# Got a token: ", $t->dump, "\n#\n"; push @t, $t; print "# That's token number ", scalar(@t), "\n";}ok scalar(@t), 5; # count of tokensok $t[0]->type, 'start';ok $t[1]->type, 'start';ok $t[2]->type, 'text';ok $t[3]->type, 'end';ok $t[4]->type, 'end';ok $t[0]->tagname, 'Document';ok $t[1]->tagname, 'Para';ok $t[2]->text, 'Lala zaza';ok $t[3]->tagname, 'Para';ok $t[4]->tagname, 'Document';close(IN);}# ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~{print "# Testing pullparsing from a filehandle\n";my $p = Pod::Simple::PullParser->new;ok 1;open(IN, "<temp.pod") || die "Can't read-open temp.pod: $!";$p->set_source(*IN{IO});my( @t, $t );while($t = $p->get_token) { print "# Got a token: ", $t->dump, "\n#\n"; push @t, $t; print "# That's token number ", scalar(@t), "\n";}ok scalar(@t), 5; # count of tokensok $t[0]->type, 'start';ok $t[1]->type, 'start';ok $t[2]->type, 'text';ok $t[3]->type, 'end';ok $t[4]->type, 'end';ok $t[0]->tagname, 'Document';ok $t[1]->tagname, 'Para';ok $t[2]->text, 'Lala zaza';ok $t[3]->tagname, 'Para';ok $t[4]->tagname, 'Document';close(IN);}#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~print "# Wrapping up... one for the road...\n";ok 1;print "# --- Done with ", __FILE__, " --- \n";__END__
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?