1 |
package Frey::Web; |
package Frey::Web; |
2 |
use Moose::Role; |
use Moose::Role; |
3 |
|
|
4 |
|
with 'Frey::Backtrace'; |
5 |
|
|
6 |
use Frey::Types; |
use Frey::Types; |
7 |
|
|
8 |
use Continuity::Widget::DomNode; |
use Continuity::Widget::DomNode; |
207 |
my $self = shift; |
my $self = shift; |
208 |
my $error = join(" ", @_); |
my $error = join(" ", @_); |
209 |
|
|
210 |
my @backtrace; |
my @backtrace = $self->backtrace; |
211 |
foreach ( 0 .. 5 ) { |
$error .= "\n\t" . join( "\n\t", @backtrace ) if @backtrace; |
|
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 ); |
|
|
} |
|
212 |
|
|
213 |
warn "ERROR: $error\n"; |
warn "ERROR: $error\n"; |
214 |
$error =~ s{at\s+(\S+)\s+line\s+(\d+)}{at <a target="editor" href="/editor+$1+$2">$1</a> line $2}gsm; |
$error =~ s{at\s+(\S+)\s+line\s+(\d+)} |
215 |
$error =~ s{(via package ")([\w:]+)(")}{$1<a target="editor" href="/editor+$2+1">$2</a>$3}gsm; |
{at <a target="editor" href="/editor+$1+$2">$1</a> line $2}gsm; |
216 |
|
$error =~ s{(via package ")([\w:]+)(")} |
217 |
|
{$1<a target="editor" href="/editor+$2+1">$2</a>$3}gsm; |
218 |
|
|
219 |
return qq|<pre class="frey-error">$error</pre>|; |
return qq|<pre class="frey-error">$error</pre>|; |
220 |
} |
} |
221 |
|
|