diff --git a/NEWS b/NEWS index 621346b..af443fa 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,7 @@ the popular Auto IRC bot. In this alpha6 release, we have added: * Added an UNO module for playing the classic game of UNO. +* Added an Eval module for evaluating Perl code. Bug fixes: diff --git a/doc/CHANGELOG b/doc/CHANGELOG index f1caed4..e881f9a 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -3,6 +3,7 @@ Auto IRC Bot 3.0: Change Log 3.0 Indev =============================================================================== + * Added an Eval module. * Added an UNO module. * Added on_part hook. diff --git a/modules/Eval.pm b/modules/Eval.pm new file mode 100644 index 0000000..d448de0 --- /dev/null +++ b/modules/Eval.pm @@ -0,0 +1,96 @@ +# Module: Eval. See below for documentation. +# Copyright (C) 2010-2011 Xelhua Development Group, et al. +# This program is free software; rights to this code are stated in doc/LICENSE. +package M::Eval; +use strict; +use warnings; +use API::Std qw(cmd_add cmd_del trans); +use API::IRC qw(notice); + +# Initialization subroutine. +sub _init { + # Create the EVAL command. + cmd_add('EVAL', 1, 'cmd.eval', \%M::Eval::HELP_EVAL, \&M::Eval::cmd_eval) or return; + + # Success. + return 1; +} + +# Void subroutine. +sub _void { + # Delete the EVAL command. + cmd_del('EVAL') or return; + + # Success. + return 1; +} + +# Help hash for EVAL command. Spanish, German and French translations are needed. +our %HELP_EVAL = ( + 'en' => "This command allows you to eval Perl code. USE WITH CAUTION. \2Syntax:\2 EVAL ", +); + +# Callback for EVAL command. +sub cmd_eval { + my ($src, @argv) = @_; + + # Check for needed parameter. + if (!defined $argv[0]) { + notice($src->{svr}, $src->{nick}, trans('Not enough parameters').q{.}); + return; + } + + # Evaluate the expression and return the result. + my $expr = join ' ', @argv; + my $result = eval($expr); + if (!defined $result) { $result = 'None'; } + + # Return the result. + notice($src->{svr}, $src->{nick}, "Output: $result"); + + return 1; +} + + +# Start initialization. +API::Std::mod_init('Eval', 'Xelhua', '1.00', '3.0.0a6', __PACKAGE__); +# vim: set ai sw=4 ts=4: +# build: perl=5.010000 + +__END__ + +=head1 NAME + +Eval - Allows you to evaluate Perl code from IRC + +=head1 VERSION + + 1.00 + +=head1 SYNOPSIS + + >blue< eval 1; + -blue- Output: 1 + +=head1 DESCRIPTION + +This module adds the EVAL command which allows you to evaluate Perl code from +IRC, returning the output via notice. + +This command may only be used in PM and requires the cmd.eval privilege. + +This module is compatible with Auto v3.0.0a6+. + +=head1 AUTHOR + +This module was written by Elijah Perrault. + +This module is maintained by Xelhua Development Group. + +=head1 LICENSE AND COPYRIGHT + +This module is Copyright 2010-2011 Xelhua Development Group. + +This module is released under the same licensing terms as Auto itself. + +=cut