/[Frey]/trunk/lib/Frey/Class/Loader.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

Diff of /trunk/lib/Frey/Class/Loader.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 567 by dpavlin, Thu Nov 27 21:32:36 2008 UTC revision 672 by dpavlin, Tue Dec 2 01:48:45 2008 UTC
# Line 168  sub class_methods { Line 168  sub class_methods {
168    
169  sub class_runnable {  sub class_runnable {
170          my ( $self, $class ) = @_;          my ( $self, $class ) = @_;
171          my @methods = grep { m{^as_} } $self->class_methods( $class );          my @methods = grep { m{^as_} || m{_as_} } $self->class_methods( $class );
172          return @methods if wantarray;          return @methods if wantarray;
173          return \@methods;          return \@methods;
174  }  }
# Line 210  It is used by L<Frey::Run> and L<Frey::P Line 210  It is used by L<Frey::Run> and L<Frey::P
210          }          }
211  }  }
212    
213    our $syntax_checked_last;
214    
215  sub new_frey_class {  sub new_frey_class {
216          my ( $self, $class, $params ) = @_;          my ( $self, $class, $params ) = @_;
217          my $instance = $class->new( %$params );          my $instance;
218    
219            my $path = $self->class_path( $class );
220            if ( $syntax_checked_last->{$class} != -C $path ) {
221                    my $syntax = `perl -Ilib -wc $path 2>&1`;
222                    warn "# syntax: $syntax";
223                    $syntax_checked_last->{$class} = -C $class;
224            }
225    
226            if ( $class->meta->isa('Moose::Meta::Role') ) {
227                    $instance = Frey->new;
228                    Frey::Web->meta->apply( $instance );
229                    warn "new_frey_class $class role with Frey::Web";
230            } else {
231                    if ( $self->can('request_url') ) {
232                            $params->{request_url} = $self->request_url;
233                    } else {
234                            warn "## $self doesn't have request_url";
235                    }
236                    $instance = $class->new( %$params ) or confess "can't $class->new".dump( %$params );
237                    warn "new_frey_class $class";
238            }
239    
240          if ( $instance->can('data') && ! $instance->can('as_data') ) {          if ( $instance->can('data') && ! $instance->can('as_data') ) {
241                  Frey::Role::as_data->meta->apply( $instance );                  Frey::Role::as_data->meta->apply( $instance );
242                  warn "# apply as_data role to $class";                  warn "# apply as_data role to $class";
# Line 222  sub new_frey_class { Line 246  sub new_frey_class {
246                  warn "# apply as_sponge role to $class";                  warn "# apply as_sponge role to $class";
247          }          }
248    
249          $self->add_status({ $class => $params }) if $self->can('add_status');          if ( ! $instance->can('add_status') ) {
250                    Frey::Web->meta->apply( $instance );
251                    warn "# apply Frey::Web role to $class";
252            }
253    
254            $self->add_status({ $class => $params });
255          return $instance;          return $instance;
256  }  }
257    

Legend:
Removed from v.567  
changed lines
  Added in v.672

  ViewVC Help
Powered by ViewVC 1.1.26