/[Frey]/trunk/lib/Frey/Run.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/lib/Frey/Run.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 369 - (hide annotations)
Mon Nov 17 14:37:48 2008 UTC (15 years, 5 months ago) by dpavlin
File size: 2279 byte(s)
move form params generation into Frey::Action to share between Frey::Run and Frey::Pipe
1 dpavlin 180 package Frey::Run;
2     use Moose;
3 dpavlin 331 #extends 'Frey::ClassLoader';
4 dpavlin 369 extends 'Frey::Action';
5 dpavlin 180 with 'Frey::Web';
6 dpavlin 225 with 'Frey::Escape';
7 dpavlin 180
8 dpavlin 326 use Data::Dump qw/dump/;
9     use Frey::Dumper;
10    
11 dpavlin 180 =head1 NAME
12    
13     Frey::Run - display required form field for Class and run it
14    
15 dpavlin 206 =head1 DESCRIPTION
16    
17     This object will try to run other Moose objects from your application. It
18 dpavlin 314 will try to invoke C<data>, and C<markup> method on the.
19 dpavlin 206
20 dpavlin 369 =head1 SEE ALSO
21    
22     L<Frey::Action> which creates form for params
23    
24 dpavlin 180 =cut
25    
26 dpavlin 349 use Moose::Util::TypeConstraints;
27    
28     enum 'Runnable' => qw/data markup sponge/;
29    
30 dpavlin 339 sub runnable { qw/data markup sponge/ }
31 dpavlin 223
32 dpavlin 180 has 'class' => (
33     is => 'rw',
34     isa => 'Str',
35     required => 1,
36     );
37    
38 dpavlin 277 has 'params' => (
39     is => 'rw',
40     isa => 'HashRef',
41     default => sub { {} },
42     );
43    
44 dpavlin 349 has 'run' => (
45     is => 'rw',
46     isa => 'Runnable',
47 dpavlin 351 default => 'markup',
48 dpavlin 349 );
49    
50 dpavlin 277 sub html {
51     my ( $self ) = @_;
52 dpavlin 180
53     my $html;
54 dpavlin 369 eval {
55     my $class = $self->class;
56     $self->load_class( $class );
57 dpavlin 180
58 dpavlin 369 if ( $html = $self->params_form ) {
59     warn "got params form for $class";
60     } else {
61 dpavlin 353 my $o;
62     $o = $class->new( %{ $self->params } );
63     $o->depends if $o->can('depends');
64 dpavlin 351
65 dpavlin 353 if ( $self->run eq 'markup' ) {
66     warn "## using ",ref($o), "->markup";
67     $html = $o->markup;
68     warn ">>> markup $class ",length( $html ), " bytes\n";
69     } elsif ( $self->run eq 'sponge' ) {
70     my $data = $o->sponge;
71     confess "invalid data from sponge = ", dump( $data ) unless ref($data) eq 'HASH';
72 dpavlin 361 my $rows = $#{ $data->{rows} } + 1;
73     $rows ||= 'no';
74     $html .= "<strong>$rows</strong> rows from <code>$class->new" . dump( $self->params ) . "->sponge</code>";
75 dpavlin 351 $html .= '<table>';
76     $html .= '<tr><th>' . join('</th><th>', @{$data->{NAME}} ) . '</th></tr>';
77     $html .= '<tr><td>' . join('</td><td>', @$_ ) . '</td></tr>' foreach @{ $data->{rows} };
78     $html .= '</table>';
79 dpavlin 353 } elsif ( $self->run eq 'data' ) {
80     my $data = $o->data;
81 dpavlin 351 $html .= Frey::Dumper->new( data => $data )->markup;
82 dpavlin 363 $html .= '<hr/><span class="frey-popdown">dump<span><code>' . $self->html_dump( $data ) . '</code></span></span>';
83 dpavlin 353 } else {
84     $html = $self->error( "IGNORE: $class ", $o->dump );
85 dpavlin 351 }
86 dpavlin 353 };
87    
88 dpavlin 369 };
89     $html .= $self->error( $@ ) if $@;
90 dpavlin 180
91 dpavlin 358 return $self->page( %$html ) if ref($html) eq 'HASH';
92 dpavlin 369 return $self->page( title => $self->class, body => $html );
93 dpavlin 180 }
94    
95     1;

  ViewVC Help
Powered by ViewVC 1.1.26