#!/usr/bin/perl -w # t/strip_verbatim_indent.t.t - check verbatim indent stripping feature BEGIN { chdir 't' if -d 't'; } use strict; use lib '../lib'; use Test::More tests => 87; #use Test::More 'no_plan'; use_ok('Pod::Simple::XHTML') or exit; use_ok('Pod::Simple::XMLOutStream') or exit; isa_ok my $parser = Pod::Simple::XHTML->new, 'Pod::Simple::XHTML'; ok $parser->strip_verbatim_indent(' '), 'Should be able to set striper to " "'; ok $parser->strip_verbatim_indent(' '), 'Should be able to set striper to " "'; ok $parser->strip_verbatim_indent("t"), 'Should be able to set striper to "\\t"'; ok $parser->strip_verbatim_indent(sub { ' ' }), 'Should be able to set striper to coderef'; for my $spec ( [ "\n=pod\n\n foo bar baz\n", undef, qq{ foo bar baz}, "
 foo bar baz
\n\n", 'undefined indent' ], [ "\n=pod\n\n foo bar baz\n", ' ', qq{foo bar baz}, "
foo bar baz
\n\n", 'single space indent' ], [ "\n=pod\n\n foo bar baz\n", ' ', qq{ foo bar baz}, "
 foo bar baz
\n\n", 'too large indent' ], [ "\n=pod\n\n foo bar baz\n", ' ', qq{foo bar baz}, "
foo bar baz
\n\n", 'double space indent' ], [ "\n=pod\n\n foo bar baz\n", sub { ' ' }, qq{foo bar baz}, "
foo bar baz
\n\n", 'code ref stripper' ], [ "\n=pod\n\n foo bar\n\n baz blez\n", ' ', qq{foo bar\n\nbaz blez}, "
foo bar\n\nbaz blez
\n\n", 'single space indent and empty line' ], [ "\n=pod\n\n foo bar\n\n baz blez\n", sub { ' ' }, qq{foo bar\n\nbaz blez}, "
foo bar\n\nbaz blez
\n\n", 'code ref indent and empty line' ], [ "\n=pod\n\n foo bar\n\n baz blez\n", sub { (my $s = shift->[0]) =~ s/\S.*//; $s }, qq{foo bar\n\nbaz blez}, "
foo bar\n\nbaz blez
\n\n", 'heuristic code ref indent' ], [ "\n=pod\n\n foo bar\n baz blez\n", sub { s/^\s+// for @{ $_[0] } }, qq{foo bar\nbaz blez}, "
foo bar\nbaz blez
\n\n", 'militant code ref' ], [ "\n=pod\n\n foo (bar\n baz blez\n", sub { (my $i = $_[0]->[0]) =~ s/S.*//; $i }, qq{\n baz blez}, "
\n   baz blez
\n\n", 'code ref and paren' ], ) { my ($pod, $indent, $xml, $xhtml, $desc) = @$spec; # Test XML output. ok my $p = Pod::Simple::XMLOutStream->new, "Construct XML parser to test $desc"; $p->hide_line_numbers(1); my $output = ''; $p->output_string( \$output ); is $indent, $p->strip_verbatim_indent($indent), 'Set stripper for XML to ' . (defined $indent ? qq{"$indent"} : 'undef'); ok $p->parse_string_document( $pod ), "Parse POD to XML for $desc"; is $output, $xml, "Should have expected XML output for $desc"; # Test XHTML output. ok $p = Pod::Simple::XHTML->new, "Construct XHMTL parser to test $desc"; $p->html_header(''); $p->html_footer(''); $output = ''; $p->output_string( \$output ); is $indent, $p->strip_verbatim_indent($indent), 'Set stripper for XHTML to ' . (defined $indent ? qq{"$indent"} : 'undef'); ok $p->parse_string_document( $pod ), "Parse POD to XHTML for $desc"; is $output, $xhtml, "Should have expected XHTML output for $desc"; }