1# fcodes S 2BEGIN { 3 if($ENV{PERL_CORE}) { 4 chdir 't'; 5 @INC = '../lib'; 6 } 7} 8 9use strict; 10use Test; 11BEGIN { plan tests => 80 }; 12 13#use Pod::Simple::Debug (6); 14 15ok 1; 16 17use Pod::Simple::XMLOutStream; 18print "# Pod::Simple version $Pod::Simple::VERSION\n"; 19my $x = 'Pod::Simple::XMLOutStream'; 20sub e ($$) { $x->_duo(@_) } 21 22$Pod::Simple::XMLOutStream::ATTR_PAD = ' '; 23$Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output 24 25 26print "# S as such...\n"; 27 28ok( $x->_out("=pod\n\nI like S<bric-a-brac>.\n"), 29 => '<Document><Para>I like <S>bric-a-brac</S>.</Para></Document>' ); 30ok( $x->_out("=pod\n\nI like S<bric-a-brac a gogo >.\n"), 31 => '<Document><Para>I like <S>bric-a-brac a gogo </S>.</Para></Document>' ); 32ok( $x->_out("=pod\n\nI like S<< bric-a-brac a gogo >>.\n"), 33 => '<Document><Para>I like <S>bric-a-brac a gogo</S>.</Para></Document>' ); 34 35my $unless_ascii = (chr(65) eq 'A') ? '' : 36 "Skip because not in ASCIIland"; 37 38skip( $unless_ascii, 39 $x->_out( sub { $_[0]->nbsp_for_S(1) }, 40 "=pod\n\nI like S<bric-a-brac a gogo>.\n"), 41'<Document><Para>I like bric-a-brac a gogo.</Para></Document>' 42); 43skip( $unless_ascii, 44 $x->_out( sub { $_[0]->nbsp_for_S(1) }, 45 qq{=pod\n\nI like S<L</"bric-a-brac a gogo">>.\n}), 46'<Document><Para>I like <L content-implicit="yes" raw="/"bric-a-brac a gogo"" section="bric-a-brac a gogo" type="pod">"bric-a-brac a gogo"</L>.</Para></Document>' 47); 48skip( $unless_ascii, 49 $x->_out( sub { $_[0]->nbsp_for_S(1) }, 50 qq{=pod\n\nI like S<L<Stuff like that|/"bric-a-brac a gogo">>.\n}), 51'<Document><Para>I like <L raw="Stuff like that|/"bric-a-brac a gogo"" section="bric-a-brac a gogo" type="pod">Stuff like that</L>.</Para></Document>' 52); 53skip( $unless_ascii, 54 $x->_out( sub { $_[0]->nbsp_for_S(1) }, 55 qq{=pod\n\nI like S<L<Stuff I<like that>|/"bric-a-brac a gogo">>.\n}), 56'<Document><Para>I like <L raw="Stuff I<like that>|/"bric-a-brac a gogo"" section="bric-a-brac a gogo" type="pod">Stuff <I>like that</I></L>.</Para></Document>' 57); 58 59&ok( $x->_duo( sub { $_[0]->nbsp_for_S(1) }, 60 "=pod\n\nI like S<bric-a-brac a gogo>.\n", 61 "=pod\n\nI like bric-a-bracE<160>aE<160>gogo.\n", 62)); 63&ok( 64 map {my $z = $_; $z =~ s/content-implicit="yes" //g; $z =~ s/raw=".+?" //g; $z } 65 $x->_duo( sub { $_[0]->nbsp_for_S(1) }, 66 qq{=pod\n\nI like S<L</"bric-a-brac a gogo">>.\n}, 67 qq{=pod\n\nI like L<"bric-a-bracE<160>aE<160>gogo"|/"bric-a-brac a gogo">.\n}, 68)); 69&ok( 70 map {my $z = $_; $z =~ s/raw=".+?" //g; $z } 71 $x->_duo( sub { $_[0]->nbsp_for_S(1) }, 72 qq{=pod\n\nI like S<L<Stuff like that|"bric-a-brac a gogo">>.\n}, 73 qq{=pod\n\nI like L<StuffE<160>likeE<160>that|"bric-a-brac a gogo">.\n}, 74)); 75&ok( 76 map {my $z = $_; $z =~ s/content-implicit="yes" //g; $z =~ s/raw=".+?" //g; $z } 77 $x->_duo( sub { $_[0]->nbsp_for_S(1) }, 78 qq{=pod\n\nI like S<L<Stuff I<like that>|"bric-a-brac a gogo">>.\n}, 79 qq{=pod\n\nI like L<StuffE<160>I<likeE<160>that>|"bric-a-brac a gogo">.\n}, 80)); 81 82use Pod::Simple::Text; 83$x = Pod::Simple::Text->new; 84$x->preserve_whitespace(1); 85# RT#25679 86ok( 87 $x->_out(<<END 88=head1 The Tk::mega manpage showed me how C<< SE<lt> > foo >> is being rendered 89 90Both pod2text and pod2man S< > lose the rest of the line 91 92=head1 Do they always S< > lose the rest of the line? 93 94=cut 95END 96 ), 97 <<END 98The Tk::mega manpage showed me how S< > foo is being rendered 99 100 Both pod2text and pod2man lose the rest of the line 101 102Do they always lose the rest of the line? 103 104END 105); 106 107$x = 'Pod::Simple::Text'; 108# Test text output of links. 109ok( 110 $x->_out(qq{=pod\n\nL<Net::Ping>\n}), 111 " Net::Ping\n\n" 112); 113 114ok( 115 $x->_out(qq{=pod\n\nBe sure to read the L<Net::Ping> docs\n}), 116 " Be sure to read the Net::Ping docs\n\n" 117); 118 119ok( 120 $x->_out(qq{=pod\n\nL<http://www.perl.com>\n}), 121 " http://www.perl.com\n\n" 122); 123 124ok( 125 $x->_out(qq{=pod\n\nL<crontab(5)>\n}), 126 " crontab(5)\n\n" 127); 128 129ok( 130 $x->_out(qq{=pod\n\nL<Net::Ping/Ping-pong>\n}), 131 qq{ "Ping-pong" in Net::Ping\n\n} 132); 133 134ok( 135 $x->_out(qq{=pod\n\nL</"Object Methods">\n}), 136 qq{ "Object Methods"\n\n} 137); 138 139ok( 140 $x->_out(qq{=pod\n\nL</Object Methods>\n}), 141 qq{ "Object Methods"\n\n} 142); 143 144ok( 145 $x->_out(qq{=pod\n\nL<"Object Methods">\n}), 146 qq{ "Object Methods"\n\n} 147); 148 149ok( 150 $x->_out(qq{=pod\n\nL<Net::Ping/Ping-E<112>ong>\n}), 151 qq{ "Ping-pong" in Net::Ping\n\n} 152); 153 154ok( 155 $x->_out(qq{=pod\n\nL<news:comp.lang.perl.misc>\n}), 156 " news:comp.lang.perl.misc\n\n" 157); 158 159ok( 160 $x->_out(qq{=pod\n\nL<http://www.perl.org>\n}), 161 " http://www.perl.org\n\n" 162); 163 164ok( 165 $x->_out(qq{=pod\n\nSee L<http://www.perl.org>\n}), 166 " See http://www.perl.org\n\n" 167); 168 169ok( 170 $x->_out(qq{=pod\n\nL<http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/>\n}), 171 " http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/\n\n" 172); 173 174ok( 175 $x->_out(qq{=pod\n\nL<news:compE<46>lang.perl.misc>\n}), 176 " news:comp.lang.perl.misc\n\n" 177); 178 179ok( 180 $x->_out(qq{=pod\n\nL<http://wwwE<46>perl.org>\n}), 181 " http://www.perl.org\n\n" 182); 183 184ok( 185 $x->_out(qq{=pod\n\nL<things|crontab(5)>\n}), 186 " things\n\n" 187); 188 189ok( 190 $x->_out(qq{=pod\n\nL<things|crontab(5)/ENVIRONMENT>\n}), 191 " things\n\n" 192); 193 194ok( 195 $x->_out(qq{=pod\n\nL<Perl Error Messages|perldiag>\n}), 196 " Perl Error Messages\n\n" 197); 198 199ok( 200 $x->_out(qq{=pod\n\nL<Perl\nError\nMessages|perldiag>\n}), 201 " Perl Error Messages\n\n" 202); 203 204ok( 205 $x->_out(qq{=pod\n\nL<Perl\nError\t Messages|perldiag>\n}), 206 " Perl Error Messages\n\n" 207); 208 209ok( 210 $x->_out(qq{=pod\n\nL<perl.org|http://www.perl.org>\n}), 211 " perl.org <http://www.perl.org>\n\n" 212); 213 214ok( 215 $x->_out(qq{=pod\n\nSee L<perl.org|http://www.perl.org>\n}), 216 " See perl.org <http://www.perl.org>\n\n" 217); 218 219 220# Test HTML output of links. 221use Pod::Simple::HTML; 222my $PERLDOC = "https://metacpan.org/pod"; 223my $MANURL = "http://man.he.net/man"; 224sub x ($) { 225 Pod::Simple::HTML->_out( 226 sub { $_[0]->bare_output(1) }, 227 "=pod\n\n$_[0]", 228 ) 229} 230 231ok( 232 x(qq{L<Net::Ping>\n}), 233 qq{\n<p><a href="$PERLDOC/Net%3A%3APing" class="podlinkpod"\n>Net::Ping</a></p>\n} 234); 235 236ok( 237 x(qq{Be sure to read the L<Net::Ping> docs\n}), 238 qq{\n<p>Be sure to read the <a href="$PERLDOC/Net%3A%3APing" class="podlinkpod"\n>Net::Ping</a> docs</p>\n} 239); 240 241ok( 242 x(qq{L<http://www.perl.com>\n}), 243 qq{\n<p><a href="http://www.perl.com" class="podlinkurl"\n>http://www.perl.com</a></p>\n} 244); 245 246ok( 247 x(qq{L<crontab(5)>\n}), 248 qq{\n<p><a href="${MANURL}5/crontab" class="podlinkman"\n>crontab(5)</a></p>\n} 249); 250 251ok( 252 x(qq{L<Net::Ping/Ping-pong>\n}), 253 qq{\n<p><a href="$PERLDOC/Net%3A%3APing#Ping-pong" class="podlinkpod"\n>"Ping-pong" in Net::Ping</a></p>\n} 254); 255 256ok( 257 x(qq{L</"Object Methods">\n}), 258 qq{\n<p><a href="#Object_Methods" class="podlinkpod"\n>"Object Methods"</a></p>\n} 259); 260 261ok( 262 x(qq{L</Object Methods>\n}), 263 qq{\n<p><a href="#Object_Methods" class="podlinkpod"\n>"Object Methods"</a></p>\n} 264); 265 266ok( 267 x(qq{L<"Object Methods">\n}), 268 qq{\n<p><a href="#Object_Methods" class="podlinkpod"\n>"Object Methods"</a></p>\n} 269); 270 271ok( 272 x(qq{L<Net::Ping/Ping-E<112>ong>\n}), 273 qq{\n<p><a href="$PERLDOC/Net%3A%3APing#Ping-pong" class="podlinkpod"\n>"Ping-pong" in Net::Ping</a></p>\n} 274); 275 276ok( 277 x(qq{L<news:comp.lang.perl.misc>\n}), 278 qq{\n<p><a href="news:comp.lang.perl.misc" class="podlinkurl"\n>news:comp.lang.perl.misc</a></p>\n} 279); 280 281ok( 282 x(qq{L<http://www.perl.org>\n}), 283 qq{\n<p><a href="http://www.perl.org" class="podlinkurl"\n>http://www.perl.org</a></p>\n} 284); 285 286ok( 287 x(qq{See L<http://www.perl.org>\n}), 288 qq{\n<p>See <a href="http://www.perl.org" class="podlinkurl"\n>http://www.perl.org</a></p>\n} 289); 290 291ok( 292 x(qq{L<http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/>\n}), 293 qq{\n<p><a href="http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/" class="podlinkurl"\n>http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/</a></p>\n} 294); 295 296ok( 297 x(qq{L<news:compE<46>lang.perl.misc>\n}), 298 qq{\n<p><a href="news:comp.lang.perl.misc" class="podlinkurl"\n>news:comp.lang.perl.misc</a></p>\n} 299); 300 301ok( 302 x(qq{L<http://wwwE<46>perl.org>\n}), 303 qq{\n<p><a href="http://www.perl.org" class="podlinkurl"\n>http://www.perl.org</a></p>\n} 304); 305 306ok( 307 x(qq{L<things|crontab(5)>\n}), 308 qq{\n<p><a href="${MANURL}5/crontab" class="podlinkman"\n>things</a></p>\n} 309); 310 311ok( 312 x(qq{L<things|crontab(5)/ENVIRONMENT>\n}), 313 qq{\n<p><a href="${MANURL}5/crontab" class="podlinkman"\n>things</a></p>\n} 314); 315 316ok( 317 x(qq{L<Perl Error Messages|perldiag>\n}), 318 qq{\n<p><a href="$PERLDOC/perldiag" class="podlinkpod"\n>Perl Error Messages</a></p>\n} 319); 320 321ok( 322 x(qq{L<Perl\nError\nMessages|perldiag>\n}), 323 qq{\n<p><a href="$PERLDOC/perldiag" class="podlinkpod"\n>Perl Error Messages</a></p>\n} 324); 325 326ok( 327 x(qq{L<Perl\nError\t Messages|perldiag>\n}), 328 qq{\n<p><a href="$PERLDOC/perldiag" class="podlinkpod"\n>Perl Error Messages</a></p>\n} 329); 330 331ok( 332 x(qq{L<perl.org|http://www.perl.org>\n}), 333 qq{\n<p><a href="http://www.perl.org" class="podlinkurl"\n>perl.org</a></p>\n} 334); 335 336ok( 337 x(qq{See L<perl.org|http://www.perl.org>\n}), 338 qq{\n<p>See <a href="http://www.perl.org" class="podlinkurl"\n>perl.org</a></p>\n} 339); 340 341# Test link output in XHTML. 342use Pod::Simple::XHTML; 343sub o ($) { 344 my $p = Pod::Simple::XHTML->new; 345 $p->html_header(""); 346 $p->html_footer(""); 347 my $results = ''; 348 $p->output_string( \$results ); # Send the resulting output to a string 349 $p->parse_string_document("=pod\n\n$_[0]"); 350 return $results; 351} 352 353ok( 354 o(qq{L<Net::Ping>}), 355 qq{<p><a href="$PERLDOC/Net::Ping">Net::Ping</a></p>\n\n} 356); 357 358ok( 359 o(qq{Be sure to read the L<Net::Ping> docs}), 360 qq{<p>Be sure to read the <a href="$PERLDOC/Net::Ping">Net::Ping</a> docs</p>\n\n} 361); 362 363ok( 364 o(qq{L<http://www.perl.com>}), 365 qq{<p><a href="http://www.perl.com">http://www.perl.com</a></p>\n\n} 366); 367 368ok( 369 o(qq{L<crontab(5)>}), 370 qq{<p><a href="${MANURL}5/crontab">crontab(5)</a></p>\n\n} 371); 372 373ok( 374 o(qq{L<Net::Ping/Ping-pong>}), 375 qq{<p><a href="$PERLDOC/Net::Ping#Ping-pong">"Ping-pong" in Net::Ping</a></p>\n\n} 376); 377 378ok( 379 o(qq{L</"Object Methods">}), 380 qq{<p><a href="#Object-Methods">"Object Methods"</a></p>\n\n} 381); 382 383ok( 384 o(qq{L</Object Methods>}), 385 qq{<p><a href="#Object-Methods">"Object Methods"</a></p>\n\n} 386); 387 388ok( 389 o(qq{L<"Object Methods">}), 390 qq{<p><a href="#Object-Methods">"Object Methods"</a></p>\n\n} 391); 392 393ok( 394 o(qq{L<Net::Ping/Ping-E<112>ong>}), 395 qq{<p><a href="$PERLDOC/Net::Ping#Ping-pong">"Ping-pong" in Net::Ping</a></p>\n\n} 396); 397 398ok( 399 o(qq{L<news:comp.lang.perl.misc>}), 400 qq{<p><a href="news:comp.lang.perl.misc">news:comp.lang.perl.misc</a></p>\n\n} 401); 402 403ok( 404 o(qq{L<http://www.perl.org>}), 405 qq{<p><a href="http://www.perl.org">http://www.perl.org</a></p>\n\n} 406); 407 408ok( 409 o(qq{See L<http://www.perl.org>}), 410 qq{<p>See <a href="http://www.perl.org">http://www.perl.org</a></p>\n\n} 411); 412 413ok( 414 o(qq{L<http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/>}), 415 qq{<p><a href="http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/">http://www.perl.org/CPAN/authors/id/S/SB/SBURKE/</a></p>\n\n} 416); 417 418ok( 419 o(qq{L<news:compE<46>lang.perl.misc>}), 420 qq{<p><a href="news:comp.lang.perl.misc">news:comp.lang.perl.misc</a></p>\n\n} 421); 422 423ok( 424 o(qq{L<http://wwwE<46>perl.org>}), 425 qq{<p><a href="http://www.perl.org">http://www.perl.org</a></p>\n\n} 426); 427 428ok( 429 o(qq{L<things|crontab(5)>}), 430 qq{<p><a href="${MANURL}5/crontab">things</a></p>\n\n} 431); 432 433ok( 434 o(qq{L<things|crontab(5)/ENVIRONMENT>}), 435 qq{<p><a href="${MANURL}5/crontab">things</a></p>\n\n} 436); 437 438ok( 439 o(qq{L<Perl Error Messages|perldiag>}), 440 qq{<p><a href="$PERLDOC/perldiag">Perl Error Messages</a></p>\n\n} 441); 442 443ok( 444 o(qq{L<Perl\nError\nMessages|perldiag>}), 445 qq{<p><a href="$PERLDOC/perldiag">Perl Error Messages</a></p>\n\n} 446); 447 448ok( 449 o(qq{L<Perl\nError\t Messages|perldiag>}), 450 qq{<p><a href="$PERLDOC/perldiag">Perl Error Messages</a></p>\n\n} 451); 452 453ok( 454 o(qq{L<perl.org|http://www.perl.org>}), 455 qq{<p><a href="http://www.perl.org">perl.org</a></p>\n\n} 456); 457 458ok( 459 o(qq{See L<perl.org|http://www.perl.org>}), 460 qq{<p>See <a href="http://www.perl.org">perl.org</a></p>\n\n} 461); 462 463print "# Wrapping up... one for the road...\n"; 464ok 1; 465print "# --- Done with ", __FILE__, " --- \n"; 466 467