#!/usr/bin/perl -w # t/xhtml01.t - check basic output from Pod::Simple::XHTML BEGIN { chdir 't' if -d 't'; } use strict; use lib '../lib'; use Test::More tests => 48; #use Test::More 'no_plan'; use_ok('Pod::Simple::XHTML') or exit; my $parser = Pod::Simple::XHTML->new (); isa_ok ($parser, 'Pod::Simple::XHTML'); my $results; my $PERLDOC = "http://search.cpan.org/perldoc"; my $MANURL = "http://man.he.net/man"; initialize($parser, $results); $parser->parse_string_document( "=head1 Poit!" ); is($results, qq{

Poit!

\n\n}, "head1 level output"); initialize($parser, $results); $parser->html_h_level(2); $parser->parse_string_document( "=head1 Poit!" ); is($results, qq{

Poit!

\n\n}, "head1 level output h_level 2"); initialize($parser, $results); $parser->parse_string_document( "=head2 I think so Brain." ); is($results, qq{

I think so Brain.

\n\n}, "head2 level output"); initialize($parser, $results); $parser->parse_string_document( "=head3 I say, Brain..." ); is($results, qq{

I say, Brain...

\n\n}, "head3 level output"); initialize($parser, $results); $parser->parse_string_document( "=head4 Zort & Zog!" ); is($results, qq{

Zort & Zog!

\n\n}, "head4 level output"); sub x ($;&) { my $code = $_[1]; Pod::Simple::XHTML->_out( sub { $code->($_[0]) if $code }, "=pod\n\n$_[0]", ) } like( x("=head1 Header\n\n=for html
RAW!
\n\nDone."), qr/.+<\/h1>\s+
RAW!<\/span><\/div>\s+.*/sm, "heading building" ) or exit; initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod Gee, Brain, what do you want to do tonight? EOPOD is($results, <<'EOHTML', "simple paragraph");

Gee, Brain, what do you want to do tonight?

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod B: Now, Pinky, if by any chance you are captured during this mission, remember you are Gunther Heindriksen from Appenzell. You moved to Grindelwald to drive the cog train to Murren. Can you repeat that? P: Mmmm, no, Brain, don't think I can. EOPOD is($results, <<'EOHTML', "multiple paragraphs");

B: Now, Pinky, if by any chance you are captured during this mission, remember you are Gunther Heindriksen from Appenzell. You moved to Grindelwald to drive the cog train to Murren. Can you repeat that?

P: Mmmm, no, Brain, don't think I can.

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =over =item * P: Gee, Brain, what do you want to do tonight? =item * B: The same thing we do every night, Pinky. Try to take over the world! =back EOPOD is($results, <<'EOHTML', "simple bulleted list"); EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =over =item 1 P: Gee, Brain, what do you want to do tonight? =item 2 B: The same thing we do every night, Pinky. Try to take over the world! =back EOPOD is($results, <<'EOHTML', "numbered list");
  1. P: Gee, Brain, what do you want to do tonight?

  2. B: The same thing we do every night, Pinky. Try to take over the world!

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =over =item Pinky Gee, Brain, what do you want to do tonight? =item Brain The same thing we do every night, Pinky. Try to take over the world! =back EOPOD is($results, <<'EOHTML', "list with text headings");
Pinky

Gee, Brain, what do you want to do tonight?

Brain

The same thing we do every night, Pinky. Try to take over the world!

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =over =item * Pinky Gee, Brain, what do you want to do tonight? =item * Brain The same thing we do every night, Pinky. Try to take over the world! =back EOPOD is($results, <<'EOHTML', "list with bullet and text headings"); EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =over =item * Brain =item * Pinky =back EOPOD is($results, <<'EOHTML', "bulleted author list");
  • Brain <brain@binkyandthebrain.com>

  • Pinky <pinky@binkyandthebrain.com>

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =over =item Pinky =over =item World Domination =back =item Brain =back EOPOD is($results, <<'EOHTML', 'nested lists');
Pinky
World Domination
Brain
EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =over =item Pinky On the list: =over =item World Domination Fight the good fight =item Go to Europe (Steve Martin joke) =back =item Brain Not so much =back EOPOD is($results, <<'EOHTML', 'multiparagraph nested lists');
Pinky

On the list:

World Domination

Fight the good fight

Go to Europe

(Steve Martin joke)

Brain

Not so much

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod 1 + 1 = 2; 2 + 2 = 4; EOPOD is($results, <<'EOHTML', "code block");
  1 + 1 = 2;
  2 + 2 = 4;
EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with a C. EOPOD is($results, <<"EOHTML", "code entity in a paragraph");

A plain paragraph with a functionname.

EOHTML initialize($parser, $results); $parser->html_header("\n"); $parser->html_footer("\n"); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with body tags turned on. EOPOD is($results, <<"EOHTML", "adding html body tags");

A plain paragraph with body tags turned on.

EOHTML initialize($parser, $results); $parser->html_css('style.css'); $parser->html_header(undef); $parser->html_footer(undef); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with body tags and css tags turned on. EOPOD like($results, qr//, "adding html body tags and css tags"); initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with S. EOPOD is($results, <<"EOHTML", "Non breaking text in a paragraph");

A plain paragraph with non breaking text.

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with a L. EOPOD is($results, <<"EOHTML", "Link entity in a paragraph");

A plain paragraph with a Newlines.

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with a L. EOPOD is($results, <<"EOHTML", "Link entity in a paragraph");

A plain paragraph with a "Newlines" in perlport.

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with a L. EOPOD is($results, <<"EOHTML", "A link in a paragraph");

A plain paragraph with a Boo.

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with a L. EOPOD is($results, <<"EOHTML", "A link in a paragraph");

A plain paragraph with a http://link.included.here.

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with B. EOPOD is($results, <<"EOHTML", "Bold text in a paragraph");

A plain paragraph with bold text.

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with I. EOPOD is($results, <<"EOHTML", "Italic text in a paragraph");

A plain paragraph with italic text.

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A plain paragraph with a F. EOPOD is($results, <<"EOHTML", "File name in a paragraph");

A plain paragraph with a filename.

EOHTML # It's not important that 's (apostrophes) be encoded for XHTML output. initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod # this header is very important & dont you forget it my $text = "File is: " . ; EOPOD is($results, <<"EOHTML", "Verbatim text with encodable entities");
  # this header is very important & dont you forget it
  my \$text = "File is: " . <FILE>;
EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A text paragraph using E and E special POD entities. EOPOD is($results, <<"EOHTML", "Text with decodable entities");

A text paragraph using / and | special POD entities.

EOHTML initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod A text paragraph using numeric POD entities: E<60>, E<62>. EOPOD is($results, <<"EOHTML", "Text with numeric entities");

A text paragraph using numeric POD entities: <, >.

EOHTML SKIP: for my $use_html_entities (0, 1) { if ($use_html_entities and not $Pod::Simple::XHTML::HAS_HTML_ENTITIES) { skip("HTML::Entities not installed", 1); } local $Pod::Simple::XHTML::HAS_HTML_ENTITIES = $use_html_entities; initialize($parser, $results); $parser->parse_string_document(<<'EOPOD'); =pod # this header is very important & dont you forget it B || 'Blank!';> my $text = "File is: " . ; EOPOD is($results, <<"EOHTML", "Verbatim text with markup and embedded formatting");
  # this header is very important & dont you forget it
  my \$file = <FILE> || 'Blank!';
  my \$text = "File is: " . <FILE>;
EOHTML } ok $parser = Pod::Simple::XHTML->new, 'Construct a new parser'; $results = ''; $parser->output_string( \$results ); # Send the resulting output to a string ok $parser->parse_string_document( "=head1 Poit!" ), 'Parse with headers'; like $results, qr{}, 'Should have proper http-equiv meta tag'; # Test the link generation methods. is $parser->resolve_pod_page_link('Net::Ping', 'INSTALL'), "$PERLDOC?Net::Ping#INSTALL", 'POD link with fragment'; is $parser->resolve_pod_page_link('perlpodspec'), "$PERLDOC?perlpodspec", 'Simple POD link'; is $parser->resolve_pod_page_link(undef, 'SYNOPSIS'), '#SYNOPSIS', 'Simple fragment link'; is $parser->resolve_pod_page_link(undef, 'this that'), '#this-that', 'Fragment link with space'; is $parser->resolve_pod_page_link('perlpod', 'this that'), "$PERLDOC?perlpod#this-that", 'POD link with fragment with space'; is $parser->resolve_man_page_link('crontab(5)', 'EXAMPLE CRON FILE'), "${MANURL}5/crontab", 'Man link with fragment'; is $parser->resolve_man_page_link('crontab(5)'), "${MANURL}5/crontab", 'Man link without fragment'; is $parser->resolve_man_page_link('crontab'), "${MANURL}1/crontab", 'Man link without section'; # Make sure that batch_mode_page_object_init() works. ok $parser->batch_mode_page_object_init(0, 0, 0, 0, 6), 'Call batch_mode_page_object_init()'; ok $parser->batch_mode, 'We should be in batch mode'; is $parser->batch_mode_current_level, 6, 'The level should have been set'; ###################################### sub initialize { $_[0] = Pod::Simple::XHTML->new (); $_[0]->html_header(""); $_[0]->html_footer(""); $_[0]->output_string( \$results ); # Send the resulting output to a string $_[1] = ''; return; }