--- trunk/lib/Frey/Pipe.pm 2008/11/05 08:21:10 300
+++ trunk/lib/Frey/Pipe.pm 2008/11/18 16:54:10 418
@@ -1,5 +1,9 @@
package Frey::Pipe;
use Moose;
+extends 'Frey';
+with 'Frey::Web';
+
+use Frey::Action;
=head1 DESCRIPTION
@@ -31,26 +35,35 @@
my $out;
my $pipe;
+ $self->title( ref($self) . ' | ' . $self->pipe );
+
foreach my $part ( split(/\|/, $self->pipe ) ) {
warn "# part: '$part'";
- if ( $part =~ m{^([^/]+)/([^\+]+)(\+.*)?$} ) {
+ if ( $part =~ m{^([^/]+)/([^\+\?]+)(.*)?$} ) {
my ( $class, $method, $args ) = ( $1, $2, $3 );
my $params = $pipe;
+ $params = {} unless defined $params;
if ( defined $args ) {
- $args =~ s/^\+//;
- warn "# class $class method $method args $args", $pipe ? " pipe args " . join(',',keys %$pipe) : '';
+ $args =~ s{^[\?\+\s]}{};
+ warn "# class $class method $method args '$args'", $pipe ? " pipe args " . join(',',keys %$pipe) : '' if $self->debug;
+ push @{ $self->status }, { $class =>$args };
map {
- my ( $name, $value ) = ( $1, $2 ) if m{^([^=]+)=(.+)$};
+ my ( $name, $value ) = ( $1, $2 ) if m{^([^=]+)=(.+)$} || confess "can't parse '$_'";
$params->{$name} = $value;
- } split(/[\s\+]/, $args)
+ } split(/\s*\+\s/, $args)
}
- my $code = '$result = ' . $class . '->new' . dump( %$params ) . '->' . $method . '();';
- warn "# pipe $part -> $code";
+
+ my ( $html, $default ) = Frey::Action->new( class => $class, params => $params )->params_form;
+ warn "$class need more params than ",dump( $default ) if $html && $self->debug; # FIXME replace with query
+
+ my $code = '$result = ' . $class . '->new' . dump( %$default ) . '->' . $method . '();';
+ warn "# pipe $part -> $code" if $self->debug;
my $result;
eval $code;
die $@ if $@;
warn "# result ",ref( $result );
- $out .= qq{$part
} . dump( $result ) . '
} . dump( $result ) . '