2 package Trexy::Template;
4 ###############################################################################
7 # Copyright Nigel Hamilton 2005
10 # Author: Nigel Hamilton
11 # Filename: Trexy::Template.pm
12 # Description: Do simple, fast, "no code in the template" processing
14 # Based on Uri Guttman's sublime
15 # TinyTemplate module - released
18 # This template module features:
23 # * no coding in the template
26 # -----------------------------------------------------------------------------
27 # 24/09/2006 Took Uri's module and extended it slightly
29 ###############################################################################
34 use base qw(Template::Simple);
36 # escape Regex meta characters
37 my $start_delimiter = qr/\[\-/;
38 my $end_delimiter = qr/\-\]/;
41 ###############################################################################
43 # new - construct a template
45 ###############################################################################
51 return $class->SUPER::new( pre_delim => $start_delimiter,
52 post_delim => $end_delimiter );
57 ###############################################################################
59 # render - fully render the template into a string
61 ###############################################################################
65 my ($this, $string, $tokens) = @_;
67 # return a string from render
68 return ${ $this->SUPER::render($string, $tokens) };
73 ###############################################################################
75 # render_as_ref - render as a string reference
77 ###############################################################################
81 my ($this, $string, $tokens) = @_;
83 # return a string from render
84 return $this->SUPER::render($string, $tokens);
89 ###############################################################################
91 # get_tokens - grab the tokens values out of a template
93 ###############################################################################
99 my @found_tokens = $string =~ m/$start_delimiter(\w+)$end_delimiter/g;
101 my %unique_tokens = map { $_ => 1 } @found_tokens;
103 return keys %unique_tokens;