From 1c131dcd79d287911dfa3b7f6fb5fc8e7d0fa4ba Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Sat, 11 Aug 2012 17:29:09 -0400 Subject: Remove type-specific document modules. --- diff --git a/scripts/MarkdownBook/Book.pm b/scripts/MarkdownBook/Book.pm index 5581fb3..b7216f3 100644 --- a/scripts/MarkdownBook/Book.pm +++ b/scripts/MarkdownBook/Book.pm @@ -16,10 +16,7 @@ use strict; use warnings; -# These are temporary. -use MarkdownBook::Document::HTML::Index; -use MarkdownBook::Document::HTML::Chapter; -use MarkdownBook::Document::HTML::Appendix; +use MarkdownBook::Document::HTML; package MarkdownBook::Book; @@ -90,9 +87,9 @@ sub documents sub get_document_module { - my ($self, $mod) = @_; + my ($self) = @_; - return 'MarkdownBook::Document::' . $self->{'format_mod'} . '::' . $mod; + return 'MarkdownBook::Document::' . $self->{'format_mod'}; } sub create_documents @@ -107,7 +104,8 @@ sub create_documents my @letters; $i = 0; - $doc = $self->get_document_module('Index')->new($self); + $doc = $self->get_document_module()->new($self, 'index', 'index', + undef, $self->{'title'}); $doc_prev = $doc; push(@{$self->{'docs'}}, $doc); @@ -115,7 +113,7 @@ sub create_documents while (<$series_fh>) { chomp($_); ($file, $title) = split(/[ \t]+/, $_, 2); - $doc = $self->get_document_module('Chapter')->new($self, $file, + $doc = $self->get_document_module()->new($self, 'chapter', $file, ++$i, $title); $doc->prev($doc_prev); $doc_prev->next($doc) if defined $doc_prev; @@ -132,7 +130,7 @@ sub create_documents while (<$series_fh>) { chomp($_); ($file, $title) = split(/[ \t]+/, $_, 2); - $doc = $self->get_document_module('Appendix')->new($self, $file, + $doc = $self->get_document_module()->new($self, 'appendix', $file, $letters[++$i], $title); $doc->prev($doc_prev); $doc_prev->next($doc) if defined $doc_prev; diff --git a/scripts/MarkdownBook/Document.pm b/scripts/MarkdownBook/Document.pm index fe6634f..30c6314 100644 --- a/scripts/MarkdownBook/Document.pm +++ b/scripts/MarkdownBook/Document.pm @@ -23,7 +23,7 @@ package MarkdownBook::Document; sub new { - my ($class, $book, $file, $id, $title) = @_; + my ($class, $book, $type, $file, $id, $title) = @_; my $self; $class = ref($class) || $class; @@ -31,6 +31,7 @@ sub new bless($self, $class); $self->{'book'} = $book; + $self->{'type'} = $type; $self->{'file'} = $file; $self->{'id'} = $id; $self->{'title'} = $title; @@ -48,6 +49,16 @@ sub book return $old; } +sub type +{ + my ($self, $type) = @_; + my $old = $self->{'type'}; + + $self->{'type'} = $type if defined($type); + + return $old; +} + sub file { my ($self, $file) = @_; @@ -75,6 +86,19 @@ sub title return $old; } +sub full_title +{ + my ($self) = @_; + + if ($self->{'type'} eq 'chapter') { + return sprintf('Chapter %d - %s', $self->{'id'}, $self->{'title'}); + } elsif ($self->{'type'} eq 'appendix') { + return sprintf('Appendix %s - %s', $self->{'id'}, $self->{'title'}); + } else { + return undef; + } +} + sub prev { my ($self, $other) = @_; diff --git a/scripts/MarkdownBook/Document/Appendix.pm b/scripts/MarkdownBook/Document/Appendix.pm deleted file mode 100644 index 37d3cf8..0000000 --- a/scripts/MarkdownBook/Document/Appendix.pm +++ /dev/null @@ -1,32 +0,0 @@ -# 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; - -package MarkdownBook::Document::Appendix; - -our @ISA = qw(MarkdownBook::Document); - -sub full_title -{ - my ($self) = @_; - - return sprintf('Appendix %s - %s', $self->{'id'}, $self->{'title'}); -} - -1; diff --git a/scripts/MarkdownBook/Document/Chapter.pm b/scripts/MarkdownBook/Document/Chapter.pm deleted file mode 100644 index 90a5f5c..0000000 --- a/scripts/MarkdownBook/Document/Chapter.pm +++ /dev/null @@ -1,32 +0,0 @@ -# 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; - -package MarkdownBook::Document::Chapter; - -our @ISA = qw(MarkdownBook::Document); - -sub full_title -{ - my ($self) = @_; - - return sprintf('Chapter %d - %s', $self->{'id'}, $self->{'title'}); -} - -1; diff --git a/scripts/MarkdownBook/Document/HTML.pm b/scripts/MarkdownBook/Document/HTML.pm index f2c8d1c..e775327 100644 --- a/scripts/MarkdownBook/Document/HTML.pm +++ b/scripts/MarkdownBook/Document/HTML.pm @@ -83,8 +83,7 @@ sub output $body .= $elem->as_HTML('<>&', '', \%opt_end_tags) . "\n"; } - $doc_tmpl->param(IS_INDEX => (ref($self) eq - $self->{'book'}->get_document_module('Index'))); + $doc_tmpl->param(IS_INDEX => ($self->{'type'} eq 'index')); $doc_tmpl->param(BOOK_TITLE => $self->{'book'}->title()); $doc_tmpl->param(TITLE => $self->{'title'}); diff --git a/scripts/MarkdownBook/Document/HTML/Appendix.pm b/scripts/MarkdownBook/Document/HTML/Appendix.pm deleted file mode 100644 index 506b7d2..0000000 --- a/scripts/MarkdownBook/Document/HTML/Appendix.pm +++ /dev/null @@ -1,26 +0,0 @@ -# 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; -use MarkdownBook::Document::Appendix; - -package MarkdownBook::Document::HTML::Appendix; - -our @ISA = qw(MarkdownBook::Document::Appendix MarkdownBook::Document::HTML); - -1; diff --git a/scripts/MarkdownBook/Document/HTML/Chapter.pm b/scripts/MarkdownBook/Document/HTML/Chapter.pm deleted file mode 100644 index 49d2511..0000000 --- a/scripts/MarkdownBook/Document/HTML/Chapter.pm +++ /dev/null @@ -1,26 +0,0 @@ -# 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; -use MarkdownBook::Document::Chapter; - -package MarkdownBook::Document::HTML::Chapter; - -our @ISA = qw(MarkdownBook::Document::Chapter MarkdownBook::Document::HTML); - -1; diff --git a/scripts/MarkdownBook/Document/HTML/Index.pm b/scripts/MarkdownBook/Document/HTML/Index.pm deleted file mode 100644 index 355f179..0000000 --- a/scripts/MarkdownBook/Document/HTML/Index.pm +++ /dev/null @@ -1,26 +0,0 @@ -# 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; -use MarkdownBook::Document::Index; - -package MarkdownBook::Document::HTML::Index; - -our @ISA = qw(MarkdownBook::Document::Index MarkdownBook::Document::HTML); - -1; diff --git a/scripts/MarkdownBook/Document/Index.pm b/scripts/MarkdownBook/Document/Index.pm deleted file mode 100644 index df94305..0000000 --- a/scripts/MarkdownBook/Document/Index.pm +++ /dev/null @@ -1,48 +0,0 @@ -# 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; - -package MarkdownBook::Document::Index; - -our @ISA = qw(MarkdownBook::Document); - -sub new -{ - my ($class, $book) = @_; - my $self; - - $class = ref($class) || $class; - $self = {}; - bless($self, $class); - - $self->{'book'} = $book; - $self->{'file'} = 'index'; - $self->{'title'} = $book->title(); - - return $self; -} - -sub full_title -{ - my ($self) = @_; - - return undef; -} - -1; -- cgit v0.9.1