summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-10-04 18:43:04 -0500
committerJesse Luehrs <doy@tozt.net>2012-10-04 18:43:38 -0500
commit3aa97f35d6a363350e2c3c41c731c93721b348ac (patch)
tree470f9ddcf14226a06b0c31361fc49d9937fb496c /lib
parent8f48b142b49caf1d1e49b2124a27433fecbf5cfa (diff)
downloadtext-handlebars-3aa97f35d6a363350e2c3c41c731c93721b348ac.tar.gz
text-handlebars-3aa97f35d6a363350e2c3c41c731c93721b348ac.zip
make {{this}} an alias to {{.}} and make them work at the top level
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 {