NAME
Template::LiquidX::Tag::Dump - Simple Perl Structure Dumping Tag (Functioning Custom Tag Example)
Synopsis
Template::Liquid->parse(
"{%dump var%}"
)->render(
var
=> [
qw[some sort of data here]
]);
# With Data::Dump installed: ["some", "sort", "of", "data", "here"]
Description
This is a dead simple demonstration of extending Template::Liquid.
This tag attempts to use Data::Dump and Data::Dumper to create stringified versions of data structures...
use
Template::Liquid;
warn
Template::Liquid->parse(
"{%dump env%}"
)->render(
env
=> \
%ENV
);
...or the entire current scope with .
...
use
Template::Liquid;
warn
Template::Liquid->parse(
'{%dump .%}'
)
->render(
env
=> \
%ENV
,
inc
=> \
@INC
);
...or the entire stack of scopes with .*
...
use
Template::Liquid;
warn
Template::Liquid->parse(
'{%for x in (1..1) %}{%dump .*%}{%endfor%}'
)
->render();
...becomes (w/ Data::Dump installed)...
do
{
my
$a
= [
[
{
forloop
=> {
first
=> 1,
index
=> 1,
index0
=> 0,
last
=> 1,
length
=> 1,
limit
=> 1,
name
=>
"x-(1..1)"
,
offset
=> 0,
rindex
=> 1,
rindex0
=> 0,
sorted
=>
undef
,
type
=>
"ARRAY"
,
},
x
=> 1,
},
'fix'
,
],
];
$a
->[0][1] =
$a
->[0][0];
$a
;
}
Notice even the internal forloop
variable is included in the dump.
Notes
This is a 5m hack and is subject to change ...I've included no error handling and it may be completly broken. For a better example, see Template::LiquidX::Tag::Include.
See Also
Liquid for Designers: http://wiki.github.com/tobi/liquid/liquid-for-designers
Template::Liquid's section on custom tags.
Author
Sanko Robinson <sanko@cpan.org> - http://sankorobinson.com/
License and Legal
Copyright (C) 2009-2016 by Sanko Robinson <sanko@cpan.org>
This program is free software; you can redistribute it and/or modify it under the terms of The Artistic License 2.0. See the LICENSE file included with this distribution or http://www.perlfoundation.org/artistic_license_2_0. For clarification, see http://www.perlfoundation.org/artistic_2_0_notes.
When separated from the distribution, all original POD documentation is covered by the Creative Commons Attribution-Share Alike 3.0 License. See http://creativecommons.org/licenses/by-sa/3.0/us/legalcode. For clarification, see http://creativecommons.org/licenses/by-sa/3.0/us/.