summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Text/Handlebars.pm24
-rw-r--r--lib/Text/Xslate/Syntax/Handlebars.pm3
2 files changed, 26 insertions, 1 deletions
diff --git a/lib/Text/Handlebars.pm b/lib/Text/Handlebars.pm
index 71b1ac1..c1afc32 100644
--- a/lib/Text/Handlebars.pm
+++ b/lib/Text/Handlebars.pm
@@ -130,4 +130,28 @@ sub _register_builtin_methods {
};
}
+sub render_string {
+ my $self = shift;
+ my ($string, $vars) = @_;
+
+ if (ref($vars) && ref($vars) eq 'HASH') {
+ return $self->SUPER::render_string(@_);
+ }
+ else {
+ return $self->SUPER::render_string($string, { '.' => $vars });
+ }
+}
+
+sub render {
+ my $self = shift;
+ my ($name, $vars) = @_;
+
+ if (ref($vars) && ref($vars) eq 'HASH') {
+ return $self->SUPER::render(@_);
+ }
+ else {
+ return $self->SUPER::render($name, { '.' => $vars });
+ }
+}
+
1;
diff --git a/lib/Text/Xslate/Syntax/Handlebars.pm b/lib/Text/Xslate/Syntax/Handlebars.pm
index 69a20c6..4ea5f52 100644
--- a/lib/Text/Xslate/Syntax/Handlebars.pm
+++ b/lib/Text/Xslate/Syntax/Handlebars.pm
@@ -210,6 +210,7 @@ sub init_symbols {
$self->infix('/', 256, $self->can('led_dot'));
$self->symbol('.')->set_nud($self->can('nud_dot'));
+ $self->symbol('this')->set_nud($self->can('nud_dot'));
$self->symbol('#')->set_std($self->can('std_block'));
$self->symbol('^')->set_std($self->can('std_block'));
@@ -300,7 +301,7 @@ sub nud_dot {
my $self = shift;
my ($symbol) = @_;
- return $symbol->clone(arity => 'variable');
+ return $symbol->clone(arity => 'variable', id => '.');
}
sub std_block {