From ba9ef7040bec8bee6c419802c493f3e876bd35f6 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Fri, 10 Aug 2012 18:02:29 -0400 Subject: Move templating to MarkdownBook::Document::HTML. --- diff --git a/scripts/MarkdownBook/Book.pm b/scripts/MarkdownBook/Book.pm index ac41631..ffabb18 100644 --- a/scripts/MarkdownBook/Book.pm +++ b/scripts/MarkdownBook/Book.pm @@ -142,6 +142,16 @@ sub parse } } +sub output +{ + my ($self) = @_; + my $doc; + + foreach $doc (@{$self->{'docs'}}) { + $doc->output(); + } +} + sub list_documents { my ($self) = @_; diff --git a/scripts/MarkdownBook/Book/HTML.pm b/scripts/MarkdownBook/Book/HTML.pm index 864d3f1..1edc215 100644 --- a/scripts/MarkdownBook/Book/HTML.pm +++ b/scripts/MarkdownBook/Book/HTML.pm @@ -39,45 +39,4 @@ sub new return $self; } -sub output -{ - my ($self) = @_; - my $doc_tmpl; - my $doc; - my $doc_fh; - - $doc_tmpl = HTML::Template->new(filename => 'include/document.tmpl'); - - foreach $doc (@{$self->{'docs'}}) { - - $doc_tmpl->param( - IS_INDEX => (ref($doc) eq $self->get_document_module('Index'))); - - $doc_tmpl->param(BOOK_TITLE => $self->{'title'}); - $doc_tmpl->param(TITLE => $doc->title()); - $doc_tmpl->param(CHAPT_TITLE => $doc->full_title()); - - if (defined($doc->prev())) { - $doc_tmpl->param(PREV_LINK => $doc->prev()->file() . '.html'); - $doc_tmpl->param(PREV_TITLE => $doc->prev()->title()); - } else { - $doc_tmpl->param(PREV_LINK => undef); - $doc_tmpl->param(PREV_TITLE => undef); - } - if (defined($doc->next())) { - $doc_tmpl->param(NEXT_LINK => $doc->next()->file() . '.html'); - $doc_tmpl->param(NEXT_TITLE => $doc->next()->title()); - } else { - $doc_tmpl->param(NEXT_LINK => undef); - $doc_tmpl->param(NEXT_TITLE => undef); - } - - $doc_tmpl->param(BODY => $doc->output()); - - open($doc_fh, '>', $doc->file_path() . '.html'); - $doc_tmpl->output(print_to => $doc_fh); - close($doc_fh); - } -} - 1; diff --git a/scripts/MarkdownBook/Document/HTML.pm b/scripts/MarkdownBook/Document/HTML.pm index 3548b65..bb30e56 100644 --- a/scripts/MarkdownBook/Document/HTML.pm +++ b/scripts/MarkdownBook/Document/HTML.pm @@ -66,19 +66,49 @@ sub output { my ($self) = @_; - my $elem; + my $doc_tmpl; my %opt_end_tags; - my $out; + my $elem; + my $body; + my $doc_fh; + + $doc_tmpl = HTML::Template->new(filename => 'include/document.tmpl'); # Don't omit any end tags. %opt_end_tags = map([$_ => 0], %HTML::Element::optionalEndTag); foreach $elem (@{$self->{'tree_body'}}[0]->content_list()) { # It's safe to assume (ref($elem) eq 'HTML::Element'). - $out .= $elem->as_HTML('<>&', '', \%opt_end_tags) . "\n"; + $body .= $elem->as_HTML('<>&', '', \%opt_end_tags) . "\n"; } - return $out; + $doc_tmpl->param(IS_INDEX => (ref($self) eq + $self->{'book'}->get_document_module('Index'))); + + $doc_tmpl->param(BOOK_TITLE => $self->{'book'}->title()); + $doc_tmpl->param(TITLE => $self->{'title'}); + $doc_tmpl->param(CHAPT_TITLE => $self->full_title()); + + if (defined($self->{'prev'})) { + $doc_tmpl->param(PREV_LINK => $self->{'prev'}->file() . '.html'); + $doc_tmpl->param(PREV_TITLE => $self->{'prev'}->title()); + } else { + $doc_tmpl->param(PREV_LINK => undef); + $doc_tmpl->param(PREV_TITLE => undef); + } + if (defined($self->{'next'})) { + $doc_tmpl->param(NEXT_LINK => $self->{'next'}->file() . '.html'); + $doc_tmpl->param(NEXT_TITLE => $self->{'next'}->title()); + } else { + $doc_tmpl->param(NEXT_LINK => undef); + $doc_tmpl->param(NEXT_TITLE => undef); + } + + $doc_tmpl->param(BODY => $body); + + open($doc_fh, '>', $self->file_path() . '.html'); + $doc_tmpl->output(print_to => $doc_fh); + close($doc_fh); } 1; -- cgit v0.9.1