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

VERSION

version v0.0.3

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.

This module inherits all of PPI::Transform methods.

OPTIONS

-remove_func

Specify array reference of removing methods. If you want to implement async version of the methods, you specify them in this option.

-translate_func

Specify array reference of translating methods. You don't need to implement async version of these methods. This module translates implementation.

-replace_func

Specify array reference of replacing methods. It is expected that async version is implemented elsewhere.

-delete_func

Specify array reference of deleting methods. If you want to implement not async version of the methods, you specify them in this option.

METHODS

This module inherits all of PPI::Transform methods.

AUTHOR

Yasutaka ATARASHI <yakex@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by Yasutaka ATARASHI.

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