25 |
|
|
26 |
use Moose::Util::TypeConstraints; |
use Moose::Util::TypeConstraints; |
27 |
|
|
28 |
enum 'Runnable' => qw/data markup sponge/; |
sub runnable { qw/data data.js markup sponge/ } |
29 |
|
enum 'Runnable' => runnable; |
|
sub runnable { qw/data markup sponge/ } |
|
30 |
|
|
31 |
has 'class' => ( |
has 'class' => ( |
32 |
is => 'rw', |
is => 'rw', |
58 |
warn "got params form for $class"; |
warn "got params form for $class"; |
59 |
} else { |
} else { |
60 |
my $o; |
my $o; |
61 |
|
# we don't want default status elements |
62 |
|
$self->params->{status} = []; |
63 |
$o = $class->new( %{ $self->params } ); |
$o = $class->new( %{ $self->params } ); |
64 |
$o->depends if $o->can('depends'); |
$o->depends if $o->can('depends'); |
65 |
|
|
66 |
if ( $self->run eq 'markup' ) { |
if ( $self->run eq 'markup' ) { |
67 |
warn "## using ",ref($o), "->markup"; |
warn "## using ",ref($o), "->markup"; |
68 |
$html = $o->markup; |
$html = $o->markup; |
69 |
|
# preserve status |
70 |
|
push @{ $self->status }, { $class => $o->status } if $o->can('status'); |
71 |
|
|
72 |
warn ">>> markup $class ",length( $html ), " bytes\n"; |
warn ">>> markup $class ",length( $html ), " bytes\n"; |
73 |
} elsif ( $self->run eq 'sponge' ) { |
} elsif ( $self->run eq 'sponge' ) { |
74 |
my $data = $o->sponge; |
my $data = $o->sponge; |
80 |
$html .= '<tr><th>' . join('</th><th>', @{$data->{NAME}} ) . '</th></tr>'; |
$html .= '<tr><th>' . join('</th><th>', @{$data->{NAME}} ) . '</th></tr>'; |
81 |
$html .= '<tr><td>' . join('</td><td>', @$_ ) . '</td></tr>' foreach @{ $data->{rows} }; |
$html .= '<tr><td>' . join('</td><td>', @$_ ) . '</td></tr>' foreach @{ $data->{rows} }; |
82 |
$html .= '</table>'; |
$html .= '</table>'; |
83 |
} elsif ( $self->run eq 'data' ) { |
} elsif ( $self->run =~ m{^data(\.(js|json|yaml|yml))?$} ) { |
84 |
my $data = $o->data; |
my $data = $o->data; |
85 |
$html .= Frey::Dumper->new( data => $data )->markup; |
if ( my $format = $1 ) { |
86 |
$html .= '<hr/><span class="frey-popdown">dump<span><code>' . $self->html_dump( $data ) . '</code></span></span>'; |
$html .= to_json( $data ) if $format =~ m{js(on)?}; |
87 |
|
$html .= Dump( $data ) if $format =~ m{yaml?}; |
88 |
|
} |
89 |
|
if ( ! $html ) { |
90 |
|
$html .= Frey::Dumper->new( data => $data )->markup; |
91 |
|
push @{ $self->status }, { 'Dump' => $data }; |
92 |
|
} |
93 |
} else { |
} else { |
94 |
$html = $self->error( "IGNORE: $class ", $o->dump ); |
$html = $self->error( "IGNORE: $class ", $o->dump ); |
95 |
} |
} |
96 |
}; |
}; |
97 |
|
|
98 |
|
if ( ref($html) eq 'HASH' ) { |
99 |
|
$html = $self->page( %$html ); |
100 |
|
} else { |
101 |
|
$html = $self->page( title => $self->class, body => $html ); |
102 |
|
}; |
103 |
}; |
}; |
|
$html .= $self->error( $@ ) if $@; |
|
104 |
|
|
105 |
return $self->page( %$html ) if ref($html) eq 'HASH'; |
$html = $self->error( $@ ) if $@; |
106 |
return $self->page( title => $self->class, body => $html ); |
|
107 |
|
return $html; |
108 |
} |
} |
109 |
|
|
110 |
1; |
1; |