Subject: | system.listMethods suggestion |
if one needs system.listMethods here is what i did:
----- >>> -----
package MyApp;
use base qw(JSON::RPC::Procedure);
sub sum : Public(a:num, b:num) {
my ($s, $obj) = @_;
# return a scalar value or a hashref or an arryaref.
return $obj->{a} + $obj->{b};
}
package MyApp::system;
use attributes;
sub listMethods {
my @res;
my $pkg = __PACKAGE__; # get package name (MyApp::system)
$pkg=~s/system$//; # remove "system" so we have "MyApp::"
while (my ($name, $symbol) = each %{$pkg}) {
next if $name eq 'BEGIN'; # don't export BEGIN
blocks
next if $name eq 'import'; # don't export this sub
next unless *{$symbol}{CODE}; # export subs only
my $attr = attributes::get(*{$symbol}{CODE}); # get
attributes
next unless ($attr->{return_type} eq 'Public'); # export
only Public methods
push(@res, $name);
}
return \@res;
}
----- <<< -----
hope this helps to someone
perhaps it can be added to the examples and the POD.