--- trunk/lib/Frey/Web.pm 2008/11/26 05:14:27 531
+++ trunk/lib/Frey/Web.pm 2008/11/26 07:57:12 532
@@ -185,26 +185,7 @@
$body = '';
}
- my $warn_colors = {
- '#' => '#444',
- '##' => '#888',
- };
-
- $status_line
- .= qq||
- if $self->warnings;
+ $status_line .= $self->warnings_html;
my ($exit,$description) = ('exit','stop server');
($exit,$description) = ('restart','restart server')
@@ -370,4 +351,68 @@
}
+my $warn_colors = {
+ '#' => '#444',
+ '##' => '#888',
+};
+
+my $multiline_markers = {
+ '(' => '\)',
+ '{' => '}',
+ '[' => '\]',
+ '"' => '"',
+};
+
+my $multiline_re = '[\\' . join('\\', keys %$multiline_markers ) . ']';
+warn "## multiline markers ", dump( $multiline_markers ), " -> $multiline_re";
+
+sub log_path {
+ $Frey::Bootstrap::log_path || warn "no log_path?";
+}
+
+sub warnings_html {
+ my ($self,$level) = shift;
+ $level ||= $self->debug;
+ my $path = $self->log_path;
+
+ my $warnings;
+ my $line = 0;
+ my $multiline_end;
+
+ open(my $log, '<', $path) || die "can't open $path: $!";
+ while(<$log>) {
+ chomp;
+ $line++;
+
+ if ( $multiline_end ) {
+ undef $multiline_end if m{^$multiline_end};
+ next;
+ }
+
+ my $style = '';
+
+ if ( m{^(#*)\s+} ) {
+ my $l = $1 ? length($1) : 0;
+ $multiline_end = $multiline_markers->{$1} if m{($multiline_re)$};
+ next if $l > $level;
+ warn "## multiline_end: $multiline_end $l > $level for '$_'" if $multiline_end;
+ undef $multiline_end;
+
+ $style = $warn_colors->{$1}
+ ? ' style="color:' . $warn_colors->{$1} . '"'
+ : '';
+
+ $warnings .= qq|$_ +$line
|;
+ # FIXME should be but CSS hates me
+ }
+ }
+ close($log) || die "can't close $path: $!";
+
+ return
+ qq||
+ ;
+}
+
1;