--- trunk/lib/Frey/Run.pm 2008/11/17 14:37:48 369 +++ trunk/lib/Frey/Run.pm 2008/11/18 02:16:38 400 @@ -25,9 +25,8 @@ use Moose::Util::TypeConstraints; -enum 'Runnable' => qw/data markup sponge/; - -sub runnable { qw/data markup sponge/ } +sub runnable { qw/data data.js markup sponge/ } +enum 'Runnable' => runnable; has 'class' => ( is => 'rw', @@ -59,12 +58,17 @@ warn "got params form for $class"; } else { my $o; + # we don't want default status elements + $self->params->{status} = []; $o = $class->new( %{ $self->params } ); $o->depends if $o->can('depends'); if ( $self->run eq 'markup' ) { warn "## using ",ref($o), "->markup"; $html = $o->markup; + # preserve status + push @{ $self->status }, { $class => $o->status } if $o->can('status'); + warn ">>> markup $class ",length( $html ), " bytes\n"; } elsif ( $self->run eq 'sponge' ) { my $data = $o->sponge; @@ -76,20 +80,31 @@ $html .= '' . join('', @{$data->{NAME}} ) . ''; $html .= '' . join('', @$_ ) . '' foreach @{ $data->{rows} }; $html .= ''; - } elsif ( $self->run eq 'data' ) { + } elsif ( $self->run =~ m{^data(\.(js|json|yaml|yml))?$} ) { my $data = $o->data; - $html .= Frey::Dumper->new( data => $data )->markup; - $html .= '
dump' . $self->html_dump( $data ) . ''; + if ( my $format = $1 ) { + $html .= to_json( $data ) if $format =~ m{js(on)?}; + $html .= Dump( $data ) if $format =~ m{yaml?}; + } + if ( ! $html ) { + $html .= Frey::Dumper->new( data => $data )->markup; + push @{ $self->status }, { 'Dump' => $data }; + } } else { $html = $self->error( "IGNORE: $class ", $o->dump ); } }; + if ( ref($html) eq 'HASH' ) { + $html = $self->page( %$html ); + } else { + $html = $self->page( title => $self->class, body => $html ); + }; }; - $html .= $self->error( $@ ) if $@; - return $self->page( %$html ) if ref($html) eq 'HASH'; - return $self->page( title => $self->class, body => $html ); + $html = $self->error( $@ ) if $@; + + return $html; } 1;