--- trunk/lib/Frey/Web.pm 2008/11/28 13:16:47 581
+++ trunk/lib/Frey/Web.pm 2008/11/28 19:19:03 600
@@ -17,6 +17,7 @@
use Frey::SVK;
our @head;
+sub head { @head }
has 'request_url' => (
is => 'rw',
@@ -86,7 +87,7 @@
sub popup { my $self = shift; $self->popup_dropdown('popup', @_); }
sub dropdown { my $self = shift; $self->popup_dropdown('dropdown', @_); }
-our $re_html = qr{<(?:!--.+?--|(\w+).+?/\1)>}s; # relaxed html check for one semi-valid tag
+our $re_html = qr{<(?:!--.+?--|(\w+).+?/\1|[^>]+/)>}s; # relaxed html check for one semi-valid tag
sub popup_dropdown {
my ( $self, $type, $name, $content, $full ) = @_;
@@ -97,10 +98,12 @@
$content =~ s{([^<]+
)}{$1} && $self->TODO("code wrapped in span");
- warn "## $type [$name] = ", length( $content ), " bytes" if $self->debug;
+ warn "## $type [$name] = ", length( $content ), " bytes"; # if $self->debug; # FIXME
if ( $name =~ m{::} && $name !~ $re_html ) {
return qq|$name $content\n|;
+ } elsif ( $name =~ s{^\s*($name $content\n|;
}
@@ -118,11 +121,11 @@
$path =~ s!^/!!;
if ( $path =~ m/\.js$/ ) {
$out .= $self->_inline_path( $path ) ?
- qq|| :
+ qq|| :
qq||;
} elsif ( $path =~ m/\.css$/ ) {
$out .= $self->_inline_path( $path ) ?
- qq|| :
+ qq|| :
qq||;
} elsif ( $path =~ m{<.+>}s ) {
$out .= $path;
@@ -213,7 +216,11 @@
$url =~ s{\?reload=\d+}{};
my $body = $a->{body};
- $body ||= $self->as_markup if $self->can('as_markup');
+ if ( ! $body ) {
+ my $run = $a->{run} || 'as_markup';
+ warn "# no body, invoke $self->$run";
+ $body = $self->$run;
+ }
if ( $self->content_type !~ m{html} ) {
warn "# return only $self body ", $self->content_type;
return $body
@@ -299,6 +306,8 @@
sub editor_links {
my ( $self, $error ) = @_;
+# $error =~ s[(bless\({\s+.+?\s+},\s+)("[^"]+")(\) at)][$1$2
$3]gs; # FIXME insert bless hiding back
+
$error =~ s{at\s+(\S+)\s+line\s+(\d+)}
{at $1 line $2}gsm;
@@ -458,7 +467,9 @@
$level ||= $self->debug,
my $path = $self->log_path;
- my $warnings;
+ my $max = 50;
+ my $pos = 0;
+ my @warnings = ( '' x $max ); # XXX circualar buffer for 50 lines
my $line = 0;
my $multiline_end;
@@ -469,6 +480,8 @@
my $style = '';
+=for filter
+
if ( $multiline_end ) {
if ( m{^\Q$multiline_end\E} || m{^\s.+\Q$multiline_end\E;$} ) {
# warn "## $line end of $multiline_end in '$_'\n";
@@ -485,6 +498,9 @@
next;
}
+=cut
+ if ( m{^(#*)\s+} ) { # FIXME
+
$style = $warn_colors->{$1}
? ' style="color:' . $warn_colors->{$1} . '"'
: '';
@@ -495,17 +511,30 @@
$msg = substr( $msg, 0, $self->html_dump_width );
$spacer = '…'
}
- $msg =~ s{^\s}{ }g;
- $warnings .= qq|$msg$spacer+$line
|;
+ $warnings[ $pos++ % $max ]
+ = $msg
+# = ( $style ? qq|$msg| : $msg )
+ . $spacer
+ . qq|+$line
|;
# FIXME should be but CSS hates me
}
}
close($log) || die "can't close $path: $!";
+ my $size = -s $path;
+
+ my $warnings = join('',
+ map { $warnings[ ( $pos + $_ ) % $max ] || '' } 0 .. $max
+ );
+
+ my $s = length($warnings);
+
return
- qq||
+ # need to wrap into span so we can have links in warnings
+ qq||
;
}
@@ -533,7 +562,7 @@
push @backtrace,
qq|via $package at $path line $line|;
}
- warn "# backtrace: ", dump( @backtrace ) if @backtrace;
+ #warn "# backtrace: ", dump( @backtrace ) if @backtrace;
return @backtrace;
}