The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Module::AnyEvent::Helper::PPI::Transform - PPI::Transform subclass for AnyEvent-ize helper

SYNOPSIS

Typically, this module is not used directly but used via Module::AnyEvent::Helper::Filter. Of course, however, you can use this module directly.

  my $trans = Module::AnyEvent::Helper::PPI::Transform->new(
      -remove_func => [qw()],
      -translate_func => [qw()]
  );
  $trans->file('Input.pm' => 'Output.pm');

NOTE that this module itself does not touch package name.

DESCRIPTION

To make some modules AnyEvent-frinedly, it might be necessary to write boiler-plate codes. This module applys the following transformations.

  • Emit use AnyEvent;use Module::AnyEvent::Helper; at the beginning of the document.

  • Translate (ordinary) methods to _async methods.

    • Emit my $___cv___ = AE::cv; at the beginning of the methods.

    • Emit return $___cv___; at the end of the methods.

    • Replace method calls with pairs of Module::AnyEvent::Helper::bind_scalar and shift->recv.

  • Delete methods you need to implement by yourself.

  • Create blocking wait methods from _async methods to emit Module::AnyEvent::Helper::strip_async_all();1; at the end of the packages.

OPTIONS

-remove_func

Specify array reference of removing methods. You need to implement these methods somewhere.

-translate_func

Specify array reference of translating methods. You don't need to implement these methods.

METHODS

This module inherits all of PPI::Transform methods.

AUTHOR

Yasutaka ATARASHI <yakex@cpan.org>

LICENSE

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.