X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FReaction%2FUI%2FWidgetClass.pm;h=0b3e62f4d0356d0566890c0b139ede6640792ea3;hb=bd1aa0c203d4e2c70aeb2ced17ad023d2a27dd8f;hp=7e7216cd458b45ecb7d795d5cda3aa4e3c1cf058;hpb=8139388160b0a38002b22ff95c3fee3d8380f156;p=catagits%2FReaction.git diff --git a/lib/Reaction/UI/WidgetClass.pm b/lib/Reaction/UI/WidgetClass.pm index 7e7216c..0b3e62f 100644 --- a/lib/Reaction/UI/WidgetClass.pm +++ b/lib/Reaction/UI/WidgetClass.pm @@ -57,7 +57,11 @@ override exports_for_package => sub { my ($name, $value) = @_; my $sig = "should be: arg 'name' => \$value"; - if (@_ < 2) { confess "Not enough arguments, $sig"; } + if (@_ < 2) { + $name ||= 'undef'; + $value ||= 'undef'; + confess "Not enough arguments, $sig, got: $name => $value"; + } if (!defined $name) { confess "name undefined, $sig"; } if (ref $name) { confess "name is not a string, $sig"; } @@ -78,6 +82,23 @@ override exports_for_package => sub { my %args = map{ $vp->event_id_for($_) => $events->{$_} } keys %$events; $vp->ctx->req->uri_with(\%args); }, + attrs => sub { + my ($attrs) = @_; + return join(' ', map { + my $text = $attrs->{$_}; + for ($text) { + s/&/&/g; + s//>/g; + s/"/"/g; + } + qq{$_="${text}"}; + } keys %$attrs); + }, + implements => sub { + my ($name, $sub) = @_; + $package->meta->add_method($name, $sub); + }, ); }; override default_base => sub { ('Reaction::UI::Widget') };