It was really annoying me that parsers based on DT::F::Builder would by
default report a parse failure as being in DT::F::B::Parser.

I'd like the error message to tell me where in the calling script it
failed, so I'd like to introduce this patch.

Index: lib/DateTime/Format/Builder.pm
===================================================================
RCS file:
/cvsroot/perl-date-time/modules/DateTime-Format-Builder/lib/DateTime/F
ormat/Builder.pm,v
retrieving revision 1.35
diff -d -u -r1.35 Builder.pm
--- lib/DateTime/Format/Builder.pm      26 Jan 2004 18:46:45 -0000      1.35
+++ lib/DateTime/Format/Builder.pm      30 Jan 2004 00:37:34 -0000
@@ -200,6 +200,13 @@
 sub on_fail
 {
     my ($class, $input) = @_;
+
+    my $i = 0;
+    while (my ($pkg) = caller($i++)) {
+        last if ($pkg ne 'DateTime::Format::Builder' &&
+            $pkg !~ /^DateTime::Format::Builder::Parser/);
+    }
+    local $Carp::CarpLevel = $i;
     croak "Invalid date format: $input";
 }

Reply via email to