[Jifty-commit] r3068 - in Template-Declare: lib/Template/Declare t

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Tue Mar 27 17:47:22 EDT 2007


Author: jesse
Date: Tue Mar 27 17:47:21 2007
New Revision: 3068

Modified:
   Template-Declare/   (props changed)
   Template-Declare/META.yml
   Template-Declare/lib/Template/Declare/Tags.pm
   Template-Declare/t/xss.t

Log:
 r54252 at pinglin:  jesse | 2007-03-27 14:41:20 -0700
 * Refactoring outs to make tags into closures


Modified: Template-Declare/META.yml
==============================================================================
--- Template-Declare/META.yml	(original)
+++ Template-Declare/META.yml	Tue Mar 27 17:47:21 2007
@@ -5,7 +5,7 @@
   Test::More: 0
   Test::Warn: 0
 distribution_type: module
-generated_by: Module::Install version 0.61
+generated_by: Module::Install version 0.64
 license: perl
 name: Template-Declare
 no_index: 

Modified: Template-Declare/lib/Template/Declare/Tags.pm
==============================================================================
--- Template-Declare/lib/Template/Declare/Tags.pm	(original)
+++ Template-Declare/lib/Template/Declare/Tags.pm	Tue Mar 27 17:47:21 2007
@@ -108,8 +108,27 @@
 
 =cut
 
-sub outs {
-    outs_raw( map { _escape_utf8($_); } grep {defined} @_ );
+sub outs { _outs(0, @_); }
+
+sub _outs {
+    my $raw = shift;
+    my @phrases = (@_);
+    my $buf;
+    Template::Declare->new_buffer_frame;
+
+    foreach my $item ( grep {defined} @phrases ) {
+        Template::Declare->buffer->append( ref($item) eq 'CODE' ? $item->() : ($raw ? $item: _escape_utf8($item)) );
+    }
+
+    $buf = Template::Declare->buffer->data;
+    Template::Declare->end_buffer_frame;
+    if (defined wantarray and not wantarray) {
+        return $buf;
+        } else {
+    Template::Declare->buffer->append($buf);
+
+    }
+    return '';
 }
 
 =head2 outs_raw STUFF
@@ -119,8 +138,7 @@
 =cut
 
 sub outs_raw {
-    Template::Declare->buffer->append( join( '', grep {defined} @_ ));
-    return '';
+    _outs( 1, @_);
 }
 
 
@@ -323,7 +341,9 @@
         local $DEPTH = $DEPTH + 1;
         %ATTRIBUTES = ();
         Template::Declare->new_buffer_frame;
-        my $last = join '', map { ref($_) ? $_ : _escape_utf8($_) } $code->();
+        my $last = join '', map {
+            ref($_) eq 'CODE' ? $_->() : ( ref($_) ? $_ : _escape_utf8($_) )
+        } $code->();
 
         if ( length(Template::Declare->buffer->data) ) {
 

Modified: Template-Declare/t/xss.t
==============================================================================
--- Template-Declare/t/xss.t	(original)
+++ Template-Declare/t/xss.t	Tue Mar 27 17:47:21 2007
@@ -29,7 +29,7 @@
 {
 Template::Declare->buffer->clear;
 my $simple =(show($_));
-ok($simple =~ 'This is my <b>content');
+ok($simple =~ 'This is my <b>content', $simple);
 ok_lint($simple);
 }
 }


More information about the Jifty-commit mailing list