+=head2 is_public
+
+should return true if a certain action is supported, or false otherwise.
+Defaults to checking if the sub has the C<:Exported> attribute.
+
+=cut
+
+sub is_public {
+ my ( $self, $action ) = @_;
+ my $cv = $self->can($action);
+ return 0 unless $cv;
+ my $attrs = join " ", (attributes::get($cv) || ());
+ do {
+ warn "$action not exported" if Maypole->debug;
+ return 0;
+ } unless $attrs =~ /\bExported\b/i;
+ return 1;
+}
+
+=head2 related