1 | #! perl |
1 | #! perl |
|
|
2 | #CONVERSION: NONE |
2 | |
3 | |
3 | # generic perl code evaluator |
4 | # generic perl code evaluator |
4 | |
5 | |
5 | sub eval_event { |
6 | sub eval_event { |
6 | my ($event, $args, @args) = @_; |
7 | my ($event, %vars) = @_; |
7 | |
8 | |
8 | my $code = $event->message; |
9 | my $code = $event->message; |
9 | my $who = eval { $event->environment->name } || "<unknown>"; |
10 | my $who = eval { $event->environment->name } || "<unknown>"; |
10 | |
11 | |
11 | my $rv = eval "my ($args) = \@args;\n" |
12 | my $rv = cf::safe_eval $code, %vars; |
12 | . "#line 1 \"$who\"\n" |
|
|
13 | . $code; |
|
|
14 | |
13 | |
15 | warn $@ if $@; |
14 | warn $@ if $@; |
16 | |
15 | |
17 | $rv |
16 | $rv |
18 | } |
17 | } |
19 | |
18 | |
20 | # currently say only |
|
|
21 | sub on_say { |
19 | sub on_say { |
22 | my ($event) = @_; |
20 | my ($event, $ob, $who, $msg) = @_; |
23 | my ($event, $ob, $who, $msg, $options) = @$event{qw(event who activator message options)}; |
|
|
24 | |
21 | |
25 | local $_ = $msg; |
22 | local $_ = $msg; |
26 | |
23 | |
27 | eval_event $event, '$ob, $who, $msg, $options', $ob, $who, $msg, $options |
24 | eval_event $event, ob => $ob, who => $who, msg => $msg |
28 | } |
25 | } |
|
|
26 | |
|
|
27 | sub on_apply { |
|
|
28 | my ($event, $ob, $who) = @_; |
|
|
29 | |
|
|
30 | eval_event $event, ob => $ob, who => $who |
|
|
31 | } |