From a8ad1e32b4c81cf9a69d267899f7fa631ebe505c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 3 Dec 2015 03:14:43 -0500 Subject: handle nested raw text blocks (#6) --- Changes | 2 ++ lib/Text/Xslate/Syntax/Handlebars.pm | 7 ++++++- t/bugs.t | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 t/bugs.t diff --git a/Changes b/Changes index 81982bb..52d58b0 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,8 @@ Revision history for Text-Handlebars {{$NEXT}} + - fix '{{{' variable references inside block helpers (reported by + belousandrey, #6) 0.04 2014-04-16 - fix '..' in block helpers (reported by Jörg Prante, RT#94792) diff --git a/lib/Text/Xslate/Syntax/Handlebars.pm b/lib/Text/Xslate/Syntax/Handlebars.pm index ce21c68..05b76d5 100644 --- a/lib/Text/Xslate/Syntax/Handlebars.pm +++ b/lib/Text/Xslate/Syntax/Handlebars.pm @@ -105,7 +105,12 @@ sub split_tags { } } if (@raw_text) { - $raw_text[-1] .= $tag_start . $code . $tag_end; + if ($close_tag eq '}}}') { + $raw_text[-1] .= '{{{' . $code . '}}}'; + } + else { + $raw_text[-1] .= $tag_start . $code . $tag_end; + } } if ($code =~ m{^[#^]} || $code eq 'else') { push @raw_text, ''; diff --git a/t/bugs.t b/t/bugs.t new file mode 100644 index 0000000..b7a71a7 --- /dev/null +++ b/t/bugs.t @@ -0,0 +1,34 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use lib 't/lib'; +use Test::More; +use Test::Handlebars; + +my $vars = { + outer => 'example', + elements => [ + { inner => 'text' }, + { inner => '

text

' }, + ] +}; +my $template = <example +text +

text

+EOL + +render_ok( + $template, + $vars, + $expected, + "doy/text-handlebars#6" +); + +done_testing; -- cgit v1.2.3