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 'verbatim' {
$buffer ~= "\n";
}
when 'item' {
$buffer ~= "
\n"
}
}
},
end_element => -> ($event_type, @args) {
given $event_type {
when 'header' {
my $size = @args.shift;
$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 ~= "" ~ $mod ~ ">"
}
}
},
# 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 'verbatim' { $fh.print("
\n")
}
}
},
end_element => -> ($event_type, @args) {
given $event_type {
when 'header' {
my $size = @args.shift;
$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("" ~ $mod ~ ">");
}
}
},
# 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