--- trunk/lib/Frey/Web.pm 2008/11/19 17:57:48 460
+++ trunk/lib/Frey/Web.pm 2008/11/19 19:59:52 468
@@ -1,6 +1,8 @@
package Frey::Web;
use Moose::Role;
+with 'Frey::Backtrace';
+
use Frey::Types;
use Continuity::Widget::DomNode;
@@ -178,6 +180,12 @@
$body = '';
}
+ $status_line
+ .= qq||
+ if $self->warnings;
+
my $html = join("\n",
qq|
|,
$self->_head_html,
@@ -201,34 +209,31 @@
return $html;
}
+sub editor_links {
+ my ( $self, $error ) = @_;
+
+ $error =~ s{at\s+(\S+)\s+line\s+(\d+)}
+ {at $1 line $2}gsm;
+
+ $error =~ s{(via package ")([\w:]+)(")}
+ {$1$2$3}gsm;
+
+ return $error;
+}
+
sub error {
my $self = shift;
my $error = join(" ", @_);
- my @backtrace;
- foreach ( 0 .. 5 ) {
- my @caller = caller($_) or last;
- my @description = ( qw/
- package filename line
- subroutine hasargs
- wantarray evaltext is_require
- hints bitmask hinthash
- /);
- push @backtrace, join(' ',
- map {
- $description[$_] . ': ' . dump $caller[$_]
- } ( 0 .. $#caller )
- );
- }
- if ( @backtrace ) {
- warn "# append backtrace: ", dump( @backtrace );
- $error .= "\n\t" . join( "\n\t", @backtrace );
- }
+ my @backtrace = $self->backtrace;
+ $error .= "\n\t" . join( "\n\t", @backtrace ) if @backtrace;
warn "ERROR: $error\n";
- $error =~ s{at\s+(\S+)\s+line\s+(\d+)}{at $1 line $2}gsm;
- $error =~ s{(via package ")([\w:]+)(")}{$1$2$3}gsm;
- return qq|$error
|;
+ return
+ qq||
+ . $self->editor_links( $error ) .
+ qq|
|
+ ;
}
1;