# Copyright (C) 2012 Patrick "P. J." McDermott # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . use strict; use warnings; use MarkdownBook::Document::HTML::Index; use MarkdownBook::Document::HTML::Chapter; use MarkdownBook::Document::HTML::Appendix; use HTML::Template; package MarkdownBook::Book::HTML; use base qw(MarkdownBook::Book); sub new { my ($class, @args) = @_; my $self; $class = ref($class) || $class; $self = {}; bless($self, $class); $self = $self->SUPER::new('HTML', @args); return $self; } sub parse_documents { my ($self) = @_; my $doc; foreach $doc (@{$self->{'docs'}}) { $doc->parse_html(); } } sub number_sections { my ($self) = @_; my $doc; foreach $doc (@{$self->{'docs'}}) { $doc->number_sections(); } } sub write_templated_documents { 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;