use v6; module Pod::Event::Handler::HTML-0.0.1; multi sub pod2html (Str $buffer is rw) returns Hash is export { my %events = ( # Elements start_element => -> ($event_type, @args) { given $event_type { when 'header' { my $size = @args.shift; $buffer ~= ""; } when 'list' { my $indent = @args.shift; $buffer ~= "\n" } when 'item' { $buffer ~= "\n"; } when 'paragraph' { $buffer ~= "

\n" } when 'verbatim' { $buffer ~= "\n" } } }, # Modifiers start_modifier => -> ($mod) { given $mod { when 'E' { $buffer ~= "&" } when rx:perl5/[CF]/ { $buffer ~= "" } when rx:perl5/[BI]/ { $buffer ~= "<" ~ $mod ~ ">" } } }, end_modifier => -> ($mod) { given $mod { when 'E' { $buffer ~= ";" } when rx:perl5/[CF]/ { $buffer ~= "" } when rx:perl5/[BI]/ { $buffer ~= "" } } }, # Text handling verbatim => -> ($text) { my @lines = split("\n", $text); for (@lines) -> $line { if ($line eq '') { $buffer ~= "\n"; } else { $buffer ~= " $line\n"; } } # trim the last newline chomp($buffer); }, string => -> ($str) { $buffer ~= $str } ); return \%events; } multi sub pod2html (IO $fh) returns Hash is export { my %events = ( # Elements start_element => -> ($event_type, @args) { given $event_type { when 'header' { my $size = @args.shift; $fh.print(""); } when 'list' { my $indent = @args.shift; $fh.print("\n"); } when 'item' { $fh.print("\n"); } when 'paragraph' { $fh.print("

\n"); } when 'verbatim' { $fh.print("\n"); } } }, # Modifiers start_modifier => -> ($mod) { given $mod { when 'E' { $fh.print("&") } when rx:perl5/[CF]/ { $fh.print("") } when rx:perl5/[BI]/ { $fh.print("<" ~ $mod ~ ">"); } } }, end_modifier => -> ($mod) { given $mod { when 'E' { $fh.print(";"); } when rx:perl5/[CF]/ { $fh.print(""); } when rx:perl5/[BI]/ { $fh.print(""); } } }, # Text handling verbatim => -> ($text) { my @lines = split("\n", $text); for (@lines) -> $line { if ($line eq '') { $fh.print("\n"); } else { $fh.print(" $line\n"); } } }, string => -> ($str) { $fh.print($str) } ); return \%events; } =pod =head1 NAME Pod::Event::Handler::HTML - A collection of HTML event handlers for Pod::Event::Parser =head1 SYNOPSIS use v6; use Pod::Event::Parser; use Pod::Event::Handler::HTML; parse("path/to/file.pod", pod2html($str_buffer)); parse("path/to/file.pod", pod2html($fh)); =head1 DESCRIPTION This is a collection of event handlers for use with L which will perform HTML formatting. =head1 FUNCTIONS =over 4 =item B =item B Returns a hash of event handlers for L. You can either pass in a string C<$buffer> which will get the HTML appended to it, or you can pass in a filehandle C<$fh> which the HTML will be printed too. =back =head1 SEE ALSO =over 4 =item L =back =head1 AUTHOR stevan little, Estevan@iinteractive.comE =head1 COPYRIGHT Copyright (c) 2005. Stevan Little. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See http://www.perl.com/perl/misc/Artistic.html =cut