[Jifty-commit] r6186 - in Template-Declare/branches/markapl-syntax: . lib/Template/Declare
Jifty commits
jifty-commit at lists.jifty.org
Thu Dec 25 15:15:18 EST 2008
Author: gugod
Date: Thu Dec 25 15:15:18 2008
New Revision: 6186
Modified:
Template-Declare/branches/markapl-syntax/ (props changed)
Template-Declare/branches/markapl-syntax/lib/Template/Declare/Tags.pm
Template-Declare/branches/markapl-syntax/t/markapl-syntax-xul-tagset.t
Log:
r9519 at yra: gugod | 2008-12-26 01:56:56 +0800
Handle the case where a tag come with proto but without block. In tis case, it's:
radio(id => "foo");
Modified: Template-Declare/branches/markapl-syntax/lib/Template/Declare/Tags.pm
==============================================================================
--- Template-Declare/branches/markapl-syntax/lib/Template/Declare/Tags.pm (original)
+++ Template-Declare/branches/markapl-syntax/lib/Template/Declare/Tags.pm Thu Dec 25 15:15:18 2008
@@ -15,6 +15,7 @@
use Symbol 'qualify_to_ref';
use Devel::Declare ();
use B::Hooks::EndOfScope;
+use YAML;
# use Template::Declare::TagCompiler;
@@ -67,6 +68,7 @@
croak "Failed to load tagset module $module";
}
### TagSet options: $opts
+
my $tagset = $module->new($opts);
my $tag_list = $tagset->get_tag_list;
@@ -75,11 +77,10 @@
foreach my $tag (@$tag_list) {
my $alternative = $tagset->get_alternate_spelling($tag) || $tag;
- $code_str .= qq{sub $alternative (&);};
- $config->{$alternative} = {
- const => tag_parser_for($tag, $tagset)
- }
+ $code_str .= "sub $alternative;";
+ $config->{$alternative} = { const => tag_parser_for($tag, $tagset) };
}
+
eval $code_str;
Devel::Declare->setup_for($opts->{package}, $config);
}
@@ -146,6 +147,13 @@
return (defined($proto) && length($proto)) ? "($proto);" : "";
}
+sub inject_right_here {
+ my $inject = shift;
+ my $linestr = Devel::Declare::get_linestr;
+ substr($linestr, $Offset, 0) = $inject;
+ Devel::Declare::set_linestr($linestr);
+}
+
sub inject_if_block {
my $inject = shift;
skipspace;
@@ -163,6 +171,7 @@
if (substr($linestr, $Offset, 1) eq '{') {
substr($linestr, $Offset, 0) = $inject;
Devel::Declare::set_linestr($linestr);
+ return 1;
}
}
@@ -180,6 +189,11 @@
return sub {
my $block = pop;
+ if ((ref($block) ne 'CODE')) {
+ push @_, $block;
+ $block = sub {};
+ }
+
my @attr = @_;
%ATTRIBUTES = ();
@@ -219,12 +233,10 @@
inject_if_block("no strict; BEGIN { Template::Declare::TagCompiler::inject_scope }; use strict;");
- if (defined($proto)) {
- inject_before_block("$proto, sub");
- }
- else {
- inject_before_block("sub");
+ unless (inject_before_block(defined $proto ? "$proto, sub" : "sub")) {
+ inject_right_here("($proto)") if defined $proto;
}
+
shadow(_tag_builder_for($tag, $tagset));
}
}
Modified: Template-Declare/branches/markapl-syntax/t/markapl-syntax-xul-tagset.t
==============================================================================
--- Template-Declare/branches/markapl-syntax/t/markapl-syntax-xul-tagset.t (original)
+++ Template-Declare/branches/markapl-syntax/t/markapl-syntax-xul-tagset.t Thu Dec 25 15:15:18 2008
@@ -26,13 +26,6 @@
use Test::More tests => 1;
my $out = (Template::Declare->show("main"));
-diag($out);
-
-# like($out, qr{<div(\s+id="id")?>\s*<p>.+?</p>\s*</div>});
-pass;
-
-
-
-
-
+# diag($out);
+like($out, qr{<radio\s+id=".+?".+/>});
More information about the Jifty-commit
mailing list