package Acme::Padre::PlayCode;
use warnings;
use strict;
our $VERSION = '0.13';
use base 'Padre::Plugin';
use Padre::Util ('_T');
sub padre_interfaces {
'Padre::Plugin' => '0.43',
}
sub menu_plugins_simple {
my $self = shift;
return ('Acme::PlayCode' => [
_T('Averything'), sub { $self->play('Averything') },
_T('DoubleToSingle'), sub { $self->play('DoubleToSingle') },
_T('ExchangeCondition'), sub { $self->play('ExchangeCondition') },
_T('NumberPlus'), sub { $self->play('NumberPlus') },
_T('PrintComma'), sub { $self->play('PrintComma') },
]);
}
sub play {
my ( $self, $plugin ) = @_;
my $main = $self->main;
my $doc = $main->current->document;
return unless $doc;
my $src = $main->current->text;
my $code = $src ? $src : $doc->text_get;
return unless ( defined $code and length($code) );
require Acme::PlayCode;
my $playapp = new Acme::PlayCode;
$playapp->load_plugin( $plugin );
my $played = $playapp->play($code);
if ( $src ) {
my $editor = $main->current->editor;
$editor->ReplaceSelection( $played );
} else {
$doc->text_set( $played );
}
}
1;
__END__
=head1 NAME
Acme::Padre::PlayCode - L<Acme::PlayCode> Plugin for L<Padre>
=head1 SYNOPSIS
$>padre
Plugins -> Acme::PlayCode -> *
=head1 DESCRIPTION
This is a simple plugin to run L<Acme::PlayCode> on your source code.
If there is any selection, just run with the text you selected.
If not, run with the whole text from selected document.
=head1 AUTHOR
Fayland Lam, C<< <fayland at gmail.com> >>
Ahmad M. Zawawi C<< <ahmad.zawawi at gmail.com> >>
=head1 COPYRIGHT & LICENSE
Copyright 2008-2009 Fayland Lam and Ahmad M. Zawawi all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
=cut