summaryrefslogtreecommitdiffstats
path: root/scripts/MarkdownBook/Book.pm
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/MarkdownBook/Book.pm')
-rw-r--r--scripts/MarkdownBook/Book.pm82
1 files changed, 12 insertions, 70 deletions
diff --git a/scripts/MarkdownBook/Book.pm b/scripts/MarkdownBook/Book.pm
index fd43041..547a4f0 100644
--- a/scripts/MarkdownBook/Book.pm
+++ b/scripts/MarkdownBook/Book.pm
@@ -16,22 +16,18 @@
use strict;
use warnings;
-use MarkdownBook::Document::Index;
-use MarkdownBook::Document::Chapter;
-use MarkdownBook::Document::Appendix;
-use HTML::Template;
-
package MarkdownBook::Book;
sub new
{
- my ($class, $dir) = @_;
+ my ($class, $format, $dir) = @_;
my $self;
my $control_fh;
$class = ref($class) || $class;
$self = {};
bless($self,$class);
+ $self->{'format'} = $format;
$self->{'dir'} = $dir;
$self->{'docs'} = [];
@@ -68,6 +64,13 @@ sub title
return $old;
}
+sub get_document_module
+{
+ my ($self, $mod) = @_;
+
+ return 'MarkdownBook::Document::' . $self->{'format'} . '::' . $mod;
+}
+
sub create_documents
{
my ($self) = @_;
@@ -80,7 +83,7 @@ sub create_documents
my @letters;
$i = 0;
- $doc = MarkdownBook::Document::Index->new($self);
+ $doc = $self->get_document_module('Index')->new($self);
$doc_prev = $doc;
push(@{$self->{'docs'}}, $doc);
@@ -88,7 +91,7 @@ sub create_documents
while (<$series_fh>) {
chomp($_);
($file, $title) = split(/[ \t]+/, $_, 2);
- $doc = MarkdownBook::Document::Chapter->new($self, $file,
+ $doc = $self->get_document_module('Chapter')->new($self, $file,
++$i, $title);
$doc->prev($doc_prev);
$doc_prev->next($doc) if defined $doc_prev;
@@ -105,7 +108,7 @@ sub create_documents
while (<$series_fh>) {
chomp($_);
($file, $title) = split(/[ \t]+/, $_, 2);
- $doc = MarkdownBook::Document::Appendix->new($self, $file,
+ $doc = $self->get_document_module('Appendix')->new($self, $file,
$letters[++$i], $title);
$doc->prev($doc_prev);
$doc_prev->next($doc) if defined $doc_prev;
@@ -129,65 +132,4 @@ sub list_documents
}
}
-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 'MarkdownBook::Document::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;