dont leak weaken
[catagits/Reaction.git] / lib / Reaction / UI / WidgetClass.pm
index 0b3e62f..e68add0 100644 (file)
@@ -5,6 +5,7 @@ use Reaction::Class;
 use Reaction::UI::Widget;
 use Data::Dumper;
 use Devel::Declare;
+use HTML::Entities ();
 use aliased 'Reaction::UI::WidgetClass::_OVER';
 
 no warnings 'once';
@@ -47,7 +48,7 @@ override exports_for_package => sub {
 
       my $sig = "should be: render 'name' or render 'name' => over \$coll";
       if (!defined $name) { confess "name undefined: $sig"; }
-      if (ref $name) { confess "name not string: $sig"; }
+      if (ref $name) { confess "name is a ${\ref $name} ref, not a plain string: $sig"; }
       if (defined $over && !(blessed($over) && $over->isa(_OVER))) {
         confess "invalid args after name, $sig";
       }
@@ -67,6 +68,10 @@ override exports_for_package => sub {
 
       $new_args->{$name} = $value;
     },
+    localized => sub {
+      my($value) = @_;
+      return $_{self}->view->localize($value);
+    },
     call_next => sub {
       confess "args passed, should be just call_next; or call_next();"
         if @_;
@@ -85,13 +90,7 @@ override exports_for_package => sub {
     attrs => sub {
       my ($attrs) = @_;
       return join(' ', map {
-        my $text = $attrs->{$_};
-        for ($text) {
-            s/&/&/g;
-            s/</&lt;/g;
-            s/>/&gt;/g;
-            s/"/&quot;/g;
-        }
+        my $text = HTML::Entities::encode_entities( $attrs->{$_} );
         qq{$_="${text}"};
       } keys %$attrs);
     },