/usr/local/CPAN/Continuity-Widget/Continuity/Coro/Moose.pm


package Continuity::Coro::Moose;

use Moose::Role;
use Continuity::Coro::Continuation;

has 'cont'   => (is => 'rw');
has 'output' => (is => 'rw');
has 'input'  => (is => 'rw');

sub process {
  my ($self, $input) = @_;
  $self->input($input);
  $self->{cont} ||= continuation { while(1) { $self->main } };
  $self->{cont}->();
  return $self->output;
}

sub next {
  my ($self, $output) = @_;
  $self->output($output);
  yield;
  return $self->input;
}

1;