Skip to content

Commit 2286e33

Browse files
committed
added function interface
1 parent d51c4e9 commit 2286e33

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

lib/Rex/Function/Common.pm

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#
2+
# (c) Jan Gehring <jan.gehring@gmail.com>
3+
#
4+
# vim: set ts=2 sw=2 tw=0:
5+
# vim: set expandtab:
6+
7+
package Rex::Function::Common;
8+
9+
use strict;
10+
use warnings;
11+
12+
# VERSION
13+
14+
require Exporter;
15+
require Rex::Config;
16+
use Data::Dumper;
17+
use base qw(Exporter);
18+
use vars qw(@EXPORT);
19+
use MooseX::Params::Validate;
20+
use Rex::MultiSub::Function;
21+
22+
@EXPORT = qw(function);
23+
24+
sub function {
25+
my ( $name, $options, $function ) = @_;
26+
my $name_save = $name;
27+
if ( $name_save !~ m/^[a-zA-Z_][a-zA-Z0-9_]+$/ ) {
28+
Rex::Logger::info(
29+
"Please use only the following characters for function names:", "warn" );
30+
Rex::Logger::info( " A-Z, a-z, 0-9 and _", "warn" );
31+
Rex::Logger::info( "Also the function should start with A-Z or a-z",
32+
"warn" );
33+
die "Wrong function name syntax.";
34+
}
35+
36+
my $sub = Rex::MultiSub::Function->new(
37+
name => $name_save,
38+
function => $function,
39+
params_list => $options->{params_list},
40+
test_wantarray => 1,
41+
);
42+
43+
my ( $class, $file, @tmp ) = caller;
44+
45+
$sub->export( $class, $options->{export} );
46+
}
47+
48+
1;

0 commit comments

Comments
 (0)