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 + -
显示快捷键?