package Markdent::Handler::HTMLStream::Document; { $Markdent::Handler::HTMLStream::Document::VERSION = '0.22'; } use strict; use warnings; use namespace::autoclean; use Markdent::Types qw( Str ); use Moose; use MooseX::SemiAffordanceAccessor; with 'Markdent::Role::HTMLStream'; has title => ( is => 'ro', isa => Str, required => 1, ); my $Doctype = <<'EOF'; EOF sub start_document { my $self = shift; $self->_output()->print($Doctype); $self->_stream()->tag('html'); $self->_stream()->tag('head'); $self->_stream()->tag('title'); $self->_stream()->text( $self->title() ); $self->_stream()->tag('_title'); $self->_stream()->tag('_head'); $self->_stream()->tag('body'); } sub end_document { my $self = shift; $self->_stream()->tag('_body'); $self->_stream()->tag('_html'); } __PACKAGE__->meta()->make_immutable(); 1; # ABSTRACT: Turns Markdent events into a complete HTML document =pod =head1 NAME Markdent::Handler::HTMLStream::Document - Turns Markdent events into a complete HTML document =head1 VERSION version 0.22 =head1 DESCRIPTION This class takes an event stream and turns it into a complete HTML document. =head1 METHODS This role provides the following methods: =head2 Markdent::Handler::HTMLStream::Document->new(...) This method creates a new handler. It accepts the following parameters: =over 4 =item * title => $title The title of the document. This is required. =item * output => $fh The file handle or object to which HTML output will be streamed. If you want to capture the output in a string, you can open a filehandle to a string: my $buffer = q{}; open my $fh, '>', \$buffer; If you pass a file handle (or L object), then all calls to C will be checked, and an error will be thrown. You can pass an object of any other class, it must implement its own C method, and error handling is left up to this method. =back =head1 ROLES This class does the L, L, and L roles. =head1 BUGS See L for bug reporting details. =head1 AUTHOR Dave Rolsky =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2012 by Dave Rolsky. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut __END__