From 04d0684d2da625037e6472639d1884fb9a55ac83 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Sun, 12 Aug 2012 10:08:43 -0400 Subject: Improve error handling. --- (limited to 'scripts/MarkdownBook/Book.pm') diff --git a/scripts/MarkdownBook/Book.pm b/scripts/MarkdownBook/Book.pm index a3d9eeb..f942803 100644 --- a/scripts/MarkdownBook/Book.pm +++ b/scripts/MarkdownBook/Book.pm @@ -16,6 +16,8 @@ use strict; use warnings; +use Carp; + package MarkdownBook::Book; sub new @@ -36,6 +38,8 @@ sub new use MarkdownBook::Document::Txt; $self->{'format'} = 'txt'; $self->{'format_mod'} = 'Txt'; + } else { + croak('Unsupported format "' . $format . '"'); } $self->{'dir'} = $dir; @@ -114,7 +118,8 @@ sub create_documents # Create chapter documents. $i = 0; - open($series_fh, '<', $self->{'dir'} . '/chapters'); + open($series_fh, '<', $self->{'dir'} . '/chapters') + or croak('Cannot open chapters file'); while (<$series_fh>) { chomp($_); ($file, $title) = split(/[ \t]+/, $_, 2); @@ -131,7 +136,8 @@ sub create_documents $i = -1; @letters = ('A' .. 'Z'); if (-e $self->{'dir'} . '/appendices') { - open($series_fh, '<', $self->{'dir'} . '/apendices'); + open($series_fh, '<', $self->{'dir'} . '/apendices') + or croak('Cannot open appendices file'); while (<$series_fh>) { chomp($_); ($file, $title) = split(/[ \t]+/, $_, 2); @@ -194,11 +200,14 @@ sub _do_subst_macro if ($macro eq 'toc') { return $self->_do_gen_toc(); } elsif ($macro eq 'sectlink') { - die('Invalid arguments to "sectlink" macro') if @args != 1; - $sec = $self->{'sections_by_id'}->{$args[0]}; - return '[§ ' . $sec->number() . '][' . $sec->id() . ']'; + if (@args != 1) { + carp('Invalid arguments to "sectlink" macro'); + } else { + $sec = $self->{'sections_by_id'}->{$args[0]}; + return '[§ ' . $sec->number() . '][' . $sec->id() . ']'; + } } else { - die("Unrecognized macro \"$macro\""); + carp("Unrecognized macro \"$macro\""); } } -- cgit v0.9.1